Sunday 12 June 2011

2D Engines or 3D Engines for 2D Projects

After spending some time with the development of a 2D game for PC or maybe other platforms I had time to test out some engines that we have access to for free at home or with student licences in school.

For rapid prototyping the Game Maker is the first choice but it has problems with complex mechanics and collusion detection.

Working with Sprites and only 2D objects makes the use of an engine like Unity3D or even the UDK more tedious than helpful because these engines are designed for 3D gameplay and 3D meshes. To tell them otherwise via code is a lot of work and the result is not always desirable. 2.5D on the other hand is more easy to accomplish because the engine already knows how to handle 3D meshes and the "2D gameplay" is possible with some camera tricks.

Using an 2D engine like Torque2D is the better choice for Sprites, 2D objects and 2D gameplay. I am just starting to work with it so I will hold my praises for the moment, maybe it is easy, maybe not...

As for scripting languages most engines today use some kind of c++ related syntax and operators so the switch between different engines is not so difficult, in some cases the code is even transferable between them if not too much engine specific code is being used.

Student Project - Engines a Plenty

And another game engine to learn and to master...

After having some trouble with imprecise collision detection and too much hassle with gravity on jump mechanics we decided to change the game engine for our student project. Previously we used Unity3D but it being an 3D engine and we wanting to make a 2D game resulted in a lot of headache for all of us but mostly me 'cause I had to tame the beast and failed miserably.

In the beginning of the planning phase there was the option to use the Game Maker but we decided against it because it could produce nice prototypes but making good games with it seemed impossible. A better engine had to do the job. Unfortunately, I decided that Unity would be a good alternative and we ran with it as long as we could before realizing that it was too much for us beginners.

One of our teachers mention another engine that we could use that is more powerful than the Game Maker but not a 3D engine that needs too much fixing. He was talking about Torque2D. So we now try our luck with that engine.

My preliminary tests show that the engine is capable of providing the mechanics we want and that it is manageable to change the engine at our current development stage.
All the artwork has to be resized anyway so the conversion in file type that is needed is not that much of a problem. The scripts have to be rewritten with the new engine code in mind but there were just about 50 lines of code combined so no problem there as well.

Saturday 4 June 2011

Student Project - Progress Report and some Disillusion towards small Projects

The project is deep in production and we are experiencing some difficulties I thought would be avoidable in a project that small and with so few people involved.

Being almost the only one with programming experience was clear for me from the beginning but the amount of work I have to do to get some "simple" mechanics to work properly has me overwhelmed and stumbling at times. Fortunately there is another team member with programming skills that helped out at these times and I could take a step back and reassess the situation.

Another disillusion I experienced was the fact that even in a team with five people work can stagnate and a good "leadership" is needed. I put leadership in parenthesis because it is more the internal communication the team lead lacks as the skill to lead others in the right direction or the right goal. We are all just students at a game design school and we don't know any better. Some students in higher semesters said the first project is doomed to fail and the failure serves as a learning experience for future projects. We joked about it and tried to optimize the concept to avoid any pitfalls and make it a game that we can actually make in the given time frame but with all the courses and now even some exams we somehow lost track of our schedule and have fallen behind. I took too much time to research features of Unity and other interesting aspects of game development.
The idea or vision of our game is clear to everyone but there is no additional game design that everyone knows and that is constantly updated to see the real progress we made so far.
Our project is still a work in progress and I don't know how far we are with the other aspects like level design or graphics because I just lost track of the overall progress but most of the core features on the scripting side are implemented and need to be tested, tweaked and finalized for me to move on to other aspects of the game that need some coding.

The Need to Change my Expectations towards Unity

After working with Unity and trying to implement the core features of the game project I am working on, I have to change my previous statement that Unity is comfortable and easy to work with to an extend.

When I first imported the graphics provided by our artist he noticed that they looked rather bland and there were some lines that he was sure were not in the original files. The files were Photoshop CS 2 files and the importer inside Unity had some problems with them. After some tweaking the colours could be corrected but not the lines, maybe there is an image format that we could use that is imported correctly into Unity but as we are not working with the final graphics too much tweaking would be just a waste of time.

Another aspect of Unity that bugs me a lot is the movement of objects by script. Simple movement in one axis posses no threat at all and is easily implemented but creating a jump, that looks good in 2D and is at the same time "physics confirm" meaning it feels right in the given environment, seemed almost impossible at first and without using a set of external scripts. These scripts are included as a standard package with Unity but I wanted to avoid using scripts that provide functionality that is not needed for the project. Unfortunately it was only possible to achieve a suitable jump movement by using said scripts and add my movement scripts on top of them.

As a conclusion I was to hasty to praise Unity as I did but I learned a lot in the process and will test more before jumping on someone's "band wagon" in the future.