Here are the general tips/goals that are necessary to be understood while developing J2ME Games.
- Must support a broad variety of devices
- Must ensure that content is lightweight, well tested on most devices
- Must ensure that the games are easy to play and have a user friendly interface
- Additional effects such as sound and vibration can be added based on the gaming requirement Multi-player games should provide smooth join and exit or pauses of other players during the game-play and hence should not affect the game of any player.
- Develop the game in such a way that porting to be easy.
Full Screen – Most screens are best played when in full screen. It is suggested that the game be initiated and played in full screen throughout the game play.
Sound– All games are recommended to have some sound at least using tones.Specialized games developed exclusively for phones such as N-Gage and N-Gage QD can have .wav based sounds.
Game Pre-loading: It is suggested that the heavy classes,images, and entire layout be pre-loaded with a loading screen as soon as the user clicks on the game option from the games menu. Also the loading screen can have a status bar that shows how much has been loaded.
Game Menu: It is recommended that the game include a proper gaming menu which can allow users to choose various options such as New Game, Save Game etc.
Use Double Linked Lists instead of vectors: It is recommended that the developer use double linked lists instead of vectors to manage objects instead of vectors as they are fast and easy to navigate.
Draw state– Full objects that are only within the visible context of the layout: It is recommended that the objects within the layer-manager be drawn only when they fall within the visible context of the screen. By state-ful, these objects could be something that needs itself to remember its state or some data through out the game. For example could be several computer racers within the game, these objects need to remember their X,Y positions and hence they generally need to be kept alive i.e. not destroyed. But they can be drawn on the Layout-Manager (Just in Time)(JIT).
Create Objects JIT: If conditions permit, some state-ful objects can be destroyed with their state being maintained by other means. Then these objects can also be created Just in Time (JIT) when they begin to appear with in the visible context of the screen.
Pre-load Images, Sounds: Loading sounds or images from files generally takes a long time. Hence it is suggested that all images and sounds be pre-loaded within the constructor.
Follow Coding Conventions such as a) Naming Conventions -Hungarian naming conventions b) Code comments including IPR Statement c) Indent your code
Follow good programming practices a) Create objects JIT / variables JITb) Reduce the number of variables that are publicly defined and have a global scope
c)Do not use cyclic functions
d) Reduce redundant code by introducing functions e) Remove unnecessary code & variables
Follow good re-usability practices a) Create Classes that can enable you easy re-use. They should have minimum customization required b) If many of the libraries are commonly used, create them as run time objects and re-use c)Functionality specific classes can be made generic during game development and later re-used. Like for e.g. car movements made generic and car class is made.Later when any car game is developed that class can be re-used.
Follow the Game Development Life-cycle (GDLC) : The game development life-cycle forms an important part of game development as it defines the process well and introduces a better and refined game development approach also called as the game development process.
Splash screen – Must have a clear Logo of the game, distinct from the splash screen. Must occupy full screen and must include a start up tone based music
Textbox for name – Please remove this as it is quite troublesome. To save the game, request for text box after the game completes for high scores.
Quick restart – Show a “Restart” button when you show the game over screen. This will enable a quicker restart. Also show a “Quit” button on right to enable the users to leave the game.
Game loading – Center this screen, and really load the game midlet /canvas class within it. Also load any other objects class within it. Then just hide their screen.
Sound-Sound must be a compulsory item to all games, tone based or midi based.
Versioning-Version logging of games should begin from now in order to keep track of the game. All games will have a “str Version” string which will be updated every time a game is “Released”. Versioning should be maintained as given below.
• GAME MAJOR VERSION relates to the story line of the game.If the story line has changed and if there has been a previous game then there must be an increment in major version.
• RELEASE NO is the number to be allocated by Ali for each game released for publishing. For every release (for publishing) this must be incremented.
• COMPILATION VERSION NO is the no to be incremented for each compilation.
• MIDP VER is the midp version if applicable.
Centralized storage of all games:The game team lead or senior members of the team must have access to a repository within the office and store all game source code / binary code. For each game (complete / incomplete) must be stored within a respectively named folder with different versions within it. New backup must be taken within the same folder for every new “RELEASE NO” only.
In case of troublesome bugs refer to the centralized bug repository.
Have colorful, graphical menus instead of text based menus.
Have a dynamic splash screen.