We've been discussing the first step for SMP, and I suggested that one possible step would be to strip JA2 of everything that can be relegated to scripts, then building up from there.
Here's a list of what I could come up with. It's not much, and I probably got confused with some things, so feel free to comment.
- Video
- Display static images
- Display sprites (*)
- Resolution independency (*)
- Display both Truetype and Bitmap fonts (*)
- Unlimited scaling for all visual components (*)
- Audio
- Replay sound
- Stereo effects
- 3D effects? (*)
- TileEngine
- 3D maths functions that take isometrics into account
- 2D -> 3D conversion functions
- Physics engine
- Collisions (*)
- Interface
- Menus and panels
- RII (*)
- Moveable panels (*)
- Resizeable panel (*)
- Panel scrolling (*)
- Panel hide/show (*)
- Buttons with callbacks
- Click regions with callbacks
- Mouseover regions
- hardware
- Mouse (3 buttons + scroll) (*)
- Keyboard
- Console (*)
- File system
- Read/write INI
- More standardized Read/write XML (*)
- Read graphics
- Read audio
- Read 3D tile/object collision data
- Read rudimentary terrain data from a simple file
- On-screen error catching/reporting
(
Components marked with (*) are either not currently present and may need to be added, or simply require enhancement.)
The idea is to remove everything that's not on this list from the code entirely, ensuring that all we have left are these components. The next step is to build the interface entirely with Lua scripts, creating primitive versions of the main gameplay elements along the way, such as displaying a main menu, strategic screen and tactical screen, without bothering to correlate anything between them - everything comes in one step at a time, basically rebuilding JA2 from scratch over a sleeker and more capable platform.
Also it may be a good idea to remove all the Assembly language code, if possible.