In Game Collision
It’s been almost 2 weeks since our last post and there has been a flurry of activity here at Zatun.
One of the beginning important tasks of the game was that the collision should work perfectly. The green line which you see is in fact the collision.
Basically in any platform game, there are particular collision algorithm as per the requirement and many of them you can found in game books, on wiki and on other websites.
Our programmer worked on the collision and he has chosen a shorter method. He felt that other programmers might not agree with this method (even he did not when he first thought about it) but still the method works perfectly.
The interactive object you may be having seen in this game video is a platform is continuously going up and down. How did we do this? It’s a company’s big secret.
On a side note:
We tested the collision on the other levels today and the game does look beautiful. Wait for a week or two and you will see our new video with Character interaction, AI (artificial intelligence) and interactive objects.
We are ready with our Jungle Worlds level and Palace level walk through for our 2D game. It did take the artists quite a bit of time and to create the levels but now the final product does look amazing.
Video 1 – Jungle Worlds level Walk through
Video 2 – Palace Worlds Level Walk Through
I hope you have a look at it and if you have any comments or suggestions for our in the jungle level, do not hesitate to leave us a comment.
We are ready with our XNA Tile Map Editor. Rather we would call it a Map Editor. Because in this updated edition you can also have tiles along with free images. So, double bonanza in single price.
And if you ask us the problems we have face while development, we would say they too many to count.
There were issues while making tiles and saving them but free images were fairly easy. There were a few problems in mouse handling, so we had to provide a complete keyboard control to set layer depth, rotation ,etc. (Which you can’t see in video).
Another crazy problem which came up was , whenever you try to move mouse to scroll window, coordination of mouse and images got messed up and they would fix their place anywhere in screen.
We have checked many videos on you tube and have gone through many tutorials and then came up with a detailed list of items to be added in the map editor. We have come up with our unique way of creating map editor which is useful for both Platformer games and RPG games.
Now we are on board the ship of hardcore coding and have just started sailing. We are now ready with the GUI of the game-the menu of the game which handles the game parameters.
We started building it from scratch by taking reference from book- Beginning XNA Programming, from Novice to Professional by Alexandre Lobao and others. Our Intern programmer from DDIT was assigned this task to learn how to go about building the menu and his contribution did help us.
We made a general menu initially which gave us the idea about the functioning of menu. We took the approach of Game Components in which every screen was added to the game as a game component. Through this we acquired the knowledge about important features of XNA like Game Components and Game Services.
We also got to know about controlling Sound, display modes and keyboard controls. Dealing with File input/input and mouse was also a part of the learning process so now we were familiar with that also.
Then we began the main programming of our game specific menu but by following the reference as mentioned above we were facing memory issues as every menu screen was added as a game Component which consumed some space in memory and the code would get more and more complex as the number of menu screens would increase. So now we had to think of a very simple way to develop and handle menu because if menu itself would be so complex then mounting the whole game would lead severe memory issues.
We took the approach of a controller which controls the rendering and hiding of menu screen and passing controls to respective screen. The only game component added was the controller which when required to display a screen, would load its contents on run time and would display the screen. This reduced a lot of memory overload as only the visible contents were loaded in game and others are not. This also made our code very simple as in from only a single class – the class of the controller we could manage all the game screens.
Having a simple skeleton ready for the menu, adding the different functionality was not a major task as due to prior knowledge of the audio, display, mouse etc, it was just like fixing the spare parts of the motor engine in proper place. This reduced the development time and effort. Now we will move on to developing the first level of the game.
We started working on the animation editor in the 2nd week of January, 2009. This task was assigned to one of our programmers. He started off with learning about the animation editor from various games, online tutorials and also took reference from books of James Silva.
After gaining basic knowledge about the animation editor for a week, he went on with coding in the succeeding week. Initially, he was coding in form based application and developed the application to load sprite sheet and divide the sheet into frames which took him few days. He moved ahead by creating a class which fetched the positions of the frames.
Another class was created in which animation name, frame sequence for respective animation and FPS were its members. Following it, a binary file was created which was updated with all details of the animation.
A GUI application was created which could save all animations for a single character. He further coded for loading and running animations on XNA screen. Initially a new animation file was generated for every character but later it was changed to a single file for all characters and their all animations. This helped to increase the performance of the application.
The main issue we faced was of synchronization of FPS between the XNA screen and main window based application. Same FPS gave different output in terms of speed. Animation ran slower in preview window and faster in XNA screen which was later solved.
Finally the animation editor is ready for use in our game. After code review and other small modifications it would be totally complete, reliable and robust application which we will be able to use for our game support. We hope these changes won’t create any new major problems and would be done with as soon as possible.
The level editor is a major part of our game.
One of our programmers was working on the Level Editor for over a month. He went through the online tutorials about tile map and had a look at the videos of the Tile Map Editor on YouTube. The Level Editor was finally ready last week and with some more additions and changes it was complete this week.
The programmer realized that whole images of maps cannot be fully loaded at the same time and so the game will need a tile map editor. He initiated the work by reading tutorials from http://www.ziggyware.com which helped to decide as how the application will be built. The first and foremost problem he faced was of tackling windows application and XNA together in same screen.
There were two options for that:
1) Either generates buttons of windows form in XNA OR
2) Merge windows application in XNA.
He chose the 2nd option and started working with the help of this project and used those classes in the project itself.
Initially, there were difficulties in understanding the co-ordinate geometry of XNA screen but this problem was solved. The next task was to work on grid formation on screen and make the grid dynamic.
One issue which came up was of mouse click to save the entry from the user for drawing the tile map which didn’t work perfectly. This issue was solved in a few days.
Minor issues related to file I/O also arose and they were solved within 1-2 days and with all this ups and downs and finally a robust and reliable application are ready for tile map editor.
This Level Editor can be used for RPG games as well as platform games. It supports virtually infinite number of layers which is at present very much appropriate for our game.