I used to build games in a rather haphazard manner, but when I started my current project I realized that many of the things I was writing I had written before, and unless I took effort in doing them in a modular way, I would end up writing them again and again. So I put the project on hold, and split game making down into a bunch of functionality to build on top of the BGE. The idea being that instead of having a project where progress seems slow because all these little programming things are built up under the hood, to make individual ‘projects’ out of them so that I could see definite progress, even in the boring bits.
My list currently looks like
[TABLE=“class: grid, width: 800”]
Name
Description
State
Game Starter
Provides patch/update ability as well as configuring screen resolutions
Finished
Mist
Fixes blenders mist functions, and adds some!
Finished
Scheduler
Allows events to be scheduled at regular intervals
Finished
BGEInput
Provides a way for all input (joysticks, mouse etc) to be mapped
Delayed till I get a joystick
Lighting
Provides LOD for lights including loading them at game start
Delayed till I learn bpy
Sound
Manages sound effects and music, can preload sounds (somehow)
Not Started
Networking
Provides a lowish level way of sending messages from A to B using host-as-router
Not Started
Menu
Handles button clicking, inputting into text boxes etc.
Not Started
AI Toolkit
Provides a slight extension on raycasts, getting angles between objects etc.
Not Started
Loading Screen
Provided a list of executable functions will execute them one per frame till ‘loaded’
Not started
Wrapper
Takes all of the above as they are made and integrates them into a single ‘project’
Waiting for more…
[/TABLE]
These are all python-only things, and most are not accessible from logic bricks at all. Many of them can run standalone or be integrated into each other (ie the BGEinput module can be run by an always sensor, or by the scheduler.
As each module is finished (and while I’m working on them), I write up the documentation, so each module is nicely documented.
So my questions is:
What have I missed? What utilities do all games have in common that could be made into modules? I’m generally aiming for these to take 2-3 weeks to make each, so if you think it’s bigger than that, split it into something smaller.