Here is the list of features i'm planning to implement. Feel free to suggest more.
Platforms
The Game will run under Windows / Linux / OSX / Android / iOS. It should not be a port but the game actually compiles the same code base for all these platforms.
When a new version gets released, all of these platforms will get a new release. This also allows people to play multiplayer across different platforms.
As i do not have any experience with Playstation, XBox, WiiU, Switch, 3DS, WindowsPhone, etc. or short: no experience with other platforms,
i will not investigate those currently. If the demand is high enough, this might be an option at a later point of development.
Multiplayer
For the Multiplayer implementation, the game will be split into a client and a server. Playing single player is having a server without a port to listen on.
The client will process input, do some predictions and simply draw whatever its told to draw.
All game logic will be running on the server. This allows the server to run custom scripts which automatically affects all the clients. Clients only need to make sure they have the assets present.
Modding
Modding should be as easy as possible. Therefore the engine will come with some special features and tools:
- Maps are rather complex, so the engine itself will implement a map-editor.
- Maps consist of blocks and map-objects (models).
- Everything around (players, cars, weapons, whatever) are entities with a model attached.
- Models can be 2d (bounding box with sprite) or 3d models.
- Definitions for entities, weapons etc. are in .json format.
- Strings and sounds can be either hard coded or mapped using a translation functionality.
- Scripts will be in JavaScript. Every map, entity, weapon, etc. may have multiple scripts attached to allow mods to extend functionality and be loaded together.
- UIs will be written in HTML with full asset support. Communication with game via JavaScript (for getting health etc).
Graphics will be powered by OpenGL with full support for shaders, shadows, lighting etc. However advanced graphical features are hold back till the project is in a further state.
Game compatibility
Before implementing the new formats, there has to be some content to work with. However, no copyrighted content will be shipped with the game. So either someone start a free asset pack, or people will need the original games at last to do anything inside the game.
Here is the roadmap:
- GTA2 data reader. This module will read all GTA2 data and populates the specific game classes.
- GTA1 data reader (with expansions). This module will do the same with GTA1 data.
- Both data readers will be refactored to not populate the game classes but to convert them to the new file formats.
- The new data formats will be loaded then, so the original files need to be loaded once only. (at this point, creating mods may begin)
- The map-editor will be build, as its the only format which realy needs an editor tool.
Source Code might be released at a later point. Releasing it directly might create confusion and results in losing control over the project. So for the near future i'll keep it closed.
If i would ever abandon the project, the source will be put available for everyone on github.
Project Name
The project name should differ from GTA due to rights on the brand name. Feel free to suggest a new name for it.
Feedback
Feedback is welcomed! Got another fancy idea? Tell me! I might put it onto the roadmap or make sure it can be achieved with the modding api.
Status-Log
Current Task: Implementing Characters (Pedestrians and Player).
- 06.03.2017 Added pedestrian entities with correct renderer. Also added Player class to control the player pedestrian.
- 27.02.2017 Added style parsing and texturing of maps.
- 25.02.2017 Reading GTA1 maps and rendering them. No shapes or textures yet.
- 24.02.2017 Implemented Normals for Lighting.
- 23.02.2017 Added all missing slopes. Implemented flip and flat attributes.
- 22.02.2017 Added slopes 53-56.
- 21.02.2017 Created test-suite for validating all block combinations with gta2
- 20.02.2017 Added slopes 49-52.
- 19.02.2017 Added slopes 0,41-48,61-63.
- 18.02.2017 Added style parsing and texturing of maps.
- 17.02.2017 Reading GTA2 maps and rendering them. No shapes or textures yet.