Wednesday 7 March 2012

Open Box Software Vacation Work

During the summer holiday I worked for Open Box Software. I wanted to find out what it is like to work for a more corporate and Information Systems orientated company and see if I will fit in. In the past I have interned at smaller companies and did mostly graphic related things (including some Augmented Reality).

Open Box Software is a Cape Town based company that develops custom Microsoft based products for companies all over the globe. Their main client is Tishman Speyer, based in New York. To find out more about Open Box software check out their website http://www.openboxsoftware.com.

I was quite skeptical at first and thought that the work might bore me very quickly. I was wrong. I was completely taken by surprise. Not by the work that was being asked of me, but by the friendliness of the staff! My fellow staff didn't feel like co-workers but more like friends who happened to be working at the same place as me. It didn't feel like work!

I wasn’t the only vac worker. I was joined by David Chaplin (UCT Engineering student) and Andrew Tainton (UCT Information Systems student). At first I wondered how we would ever come about working together seeing as we are all from different faculties, but it all seemed to work out. We all learned from each other’s expertise and soon became quite close friends.

We were given the task to develop an Enhancement Tracking Application that Open Box can use to keep track of all their enhancements that need to be done on their projects. It will also be available to the clients so that they can see the status of their projects desired enhancements. In the past they used Excel documents to keep track of Enhancements so this application would greatly increase productivity and client satisfaction. 

The technologies used to create the application were Microsoft SQL Server 2010, ASP.NET and Linq-To-Sql. Although I have never really programmed using these technologies before, I felt quite comfortable using Visual Studio (extensive XNA experience). I soon became accustomed to how ASP.NET works and it was smooth sailing from there on.

We received help in doing the project from the Project Manager, Denzil Morison, and Technical Advisor, Louis Kruger. Even though they were extremely busy people, they never once looked annoyed by a silly question or got angry when we asked them for help.

As part of the vacation work experience we had to attend a bunch of Induction sessions where we were told about the ins and outs of the company. This really made us feel as if we were part of the community and it helped us build relationships with the rest of the staff. It was especially interesting to see the Software Life Cycle in action. We studied so much about the different Software Engineering Methodologies, a topic I was never particularly fond of. However, seeing it being applied practically changed my perspective completely. What I once regarded to be dull and boring topic, I now find quite fascinating!

Other than the work we had to do as analyst developers, we were also encouraged to take part in social events with the rest of the staff. I went away one weekend to take part in a team event called the Total Sports Challenge. It was a relay race from Gordon’s Bay to Kleinmond. We all slept over at the CEO’s holiday house in Rooi-Els and the following morning we took part in the brutal adventure. Afterwards we all had a good lunch and drink, at the company's expense, before heading back to our respective destinations.

It was really encouraging to see how well they take care of their staff and how much emphasis they put in trying to make the staff happy. When it was time to leave and get started with my honours degree I was sad to say goodbye.

I was completely sold by the company and hope to one day do business with them again. I highly recommend doing vacation work at Open Box Software if you are given the opportunity!

Monday 7 November 2011

Final Game Design Project: Swarm

Hi everyone, so here is Swarm!

For my third year Computer Games Design course ( CSC3020H ) at the University of Cape Town ( UCT ) we had to make a fully functional game using XNA 3.1. I teamed up with Bilo Lwabona and David Cohen. After a couple of days bouncing around ideas we came up with and decided to make Swarm!

The criteria for the project was that the game had to work on pc as well as Xbox360 and that it had to be 2 player compatible.

We were given a semester to make the game, however Computer Game Design weren't our only course. Some of us still had to do Computer Science, Maths and Statistics.. We therefore had to manage our time carefully, especially during test weeks and Computer Science assignment hand-ins.

Here is a brief description of Swarm with some gameplay images and a short video. Let me know what you think or have questions..

aargh.. die!!!

Swarm is a co-op third-person / first person / isometric shooter game.
Basically we attempted to make a game that resembles COD zombies, except that its giant spiders and not zombies.
You start in a house / maze and spiders break their way into the house via certain positions on the wall. Once the spiders are inside you have to shoot them, simple right?

co-op in action
When you start you have an option of being an offensive or defensive player and have different leveling up capabilities depending on which character you chose. When playing co-op it worked out quite nicely when one player was defensive and the other offensive.

During the game you can rebuild the walls to prevent the spiders from entering to rapidly, the defensive player has a power-up that speeds up the building process.

getting ready for action
Naturally as the game progresses the spiders get stronger and faster until eventually it is impossible for the player(s) to survive.

Once one player dies, the game ends. If you are awesome enough (killed enough spiders) you enter your name for the high-score list.

spiders breaking through the wall
For me the most unique aspect of our game is that you have 3 camera options, first-person, isometric and third person.
You can change your camera by pressing Y on the Xbox controller, eg. if you run away from spiders its often easier to switch to isometric mode.
What this enables is that when playing 2 player co-op, you can choose 2 different camera modes for the each player. Thus if you are into FPS games but your friend likes isometric games, then its a win-win as you can both get your wish and still play together.
health aura power-up for defensive player in action 

re-build the wall to stop spiders coming in
Our game had some really nice animated models. We used the models from the code examples included with the book 'Beginning XNA Game Programming from Novice to Professional' [Alexandre Santos Lobão, Bruno Evangelista, José Antonio Leal de Farias, and Riemer Grootjans] published by Apress. It was a really useful textbook as it explained skeletal animation using a very well thought out top-down approach. The models can be downloaded at Apress.com.

We underestimated the amount of work that goes into such a project and near the end I had my doubts on weather we were going to finish it on time.
We had some killer bugs when putting our project on the Xbox360. First shader compatibility problems, then optimization problems (the Xbox is quite old now so even though our game ran at 120 fps on my laptop, it ran at 5-6 fps on the Xbox) and finally high-score list problems (Xbox has no file system).
But luckily somehow we pulled it off. We ended up submitting 30 minutes before the extended due hand-in date (like true students do) with the frames rate back to where is should be (90 - 110).

This was the most challenging assignment of my undergraduate degree but at the same time the most rewarding. I was pleased with our final game that we handed in, even though it had some minor bugs. I'm very proud of my team-mates who stayed awake with me during crunch-time in the early hours of the morning.

Here is a short video showing the menu and some gameplay: