The goals I have with this client are:
- remove the dependence on Graal
- utilize hardware capabilities to a more significant extent (no 1980s 20 FPS cap, high performance that should be expected from a simple 2D game)
- enable much more interesting graphical modifications through the use of shaders
- provide a more C++ style (in terms of syntax, at least) scripting language that can be modified as needed
- provide an option to have a server that doesn’t use levels for its gameplay if desired
- allow for more precise control of server and client communication, which is critical for smooth player/NPC movement
- to have as little hard-coded as possible
Highlights of work done so far:
- Syntax error reporting for the script compiler is incredibly detailed to make it much easier to track down and understand what/where the code error is.
- The scripting language is quite flexible and easy to use.
Below is the current state of the client, including what needs to be done. Updates will be posted in this thread.
Struckout text indicates a completed step.
Red text indicates areas currently being worked on.
Yellow text indicates areas previously under development that have been put on hold.
- Script engine
-
- Compiler
-
- Interpreter
-
- Integration with the rendering engine
-
- Language API planning
- Language API planning
- Rendering core
-
- Image loading
-
-
Text rendering
-
Text rendering
- UI
-
- Child clipping
-
- Z-ordering
-
- Basic window
-
- Basic controls
-
-
- Button
-
-
-
- Editbox
-
-
-
- Combobox
- Combobox
-
- Levels
-
- Format specification
-
- Graal level conversion to the new format
-
- Map loading
-
- Rendering
-
-
Maps (Adjacent levels) (Will need a brief revisit later to support multiple maps.)
-
Maps (Adjacent levels) (Will need a brief revisit later to support multiple maps.)
- Scripts
-
- Events
-
- NPCs
- NPCs
-
Simple image rendering (Basic version implemented… doesn’t have all of the needed features yet.)
-
Animations (Will need a revisit for additional features.)
- Networking
-
- Server
- Server
- Script engine optimization