Assets - finally done. 04. November 2015
Since our last update we've made several awesome improvements we want to talk about one by one. For today we will focus on the assets, how they are seperated from the engine itself, and of course our extraction tool.
Lets talk about the engine first! Our engine is completely content-free. Not a single reference to KKnD. We've build it as a monolithic cross-platform core to be able to load games as modules. This means we have some mechanics hardcoded like "What is a <Map | Faction | Entity>" etc. But in general it has no maps, no entities, no faction - nothing. When starting up you will be able to either select which modules you want to load, or use a special launcher to loadup predefined module-bundles. After the bundles are loaded you have all of the content available.
A module can contain assets, scripts and definitions. It depends on the module-creator whether he splits them or put everything into one big module. Generally a module is a simple .zip file with a fixed folder-structure. This structure is required for the engine to find content that lies in them. We've splitted KKnD 1 and 2 into a total of (2+2+10+2+7)=23 Modules:
- Every game has its "assets" module containing all generic assets for the game. In our case the bunkers, oil-patches, bunker-units and such.
- Every game hat its "core" module. This module holds the definitions for generic entites. It also contains all generic logic-scripts like how buildings work, how the unit veterancy works, how infantry, vehicles and aircraft work, what turrets are etc.
- Every faction has two modules: a core module containing the faction definition, entity definitions and all faction related scripts like special weapon systems only units of this faction are using. The other module holds all assets used by this faction.
- We also have one module containing the full soundtrack for every game.
- Lastly we have a module containing a set of maps. This is either the whole singleplayer campaign for a faction including its campaign definition, or a collection of the multiplayer maps.
In our current state we have English content only. We will however implement a full German localization later on. This will create one localization module for the game core, one per faction, and one per map-pack. This modular approach will not affect the game in any way for players, but gives a lot of possibilities for modding. You can create your own modules including your own localization, maps, units, factions or even your completely own game powered by our engine. As you can see in the video below, we loaded KKnD1 and KKnD2 at the same time. It just feels like its part of one big game.
One single question remains: How far are we? Just look at the video below! We finished ALL assets. Sounds, Music, Spritesheets, Maps, everything is there! We've created another standalone tool called "Extractor". The main purpose of this tool is to read and decrypt all KKnD Xtreme and KKnD Krossfire gamefiles. It then converts them into modules fully loadable by our engine. This means you need to have the original version of the game somewhere on your PC to be able to aquire the asset modules. This procedure works with the demo versions too! They include all assets required without the maps. So you will be able to play custom missions. If you want to add the soundtrack or the singleplayer campaign or the original multiplayer maps, you need the full version of the game. One of our goals in the future is to get permission to distribute the modules with the assets, so all you need to do is downloading the engine, search through our upcomming module-database, download the KKnD module and there you go! Or as an alternative download the engine prebundled with KKnD. But for now we make sure no copyrighted material is distributed.
Take a look at this video to see our engine in the works! Before asking about the UI: We have no UI for the main-menu yet, so the UI you will see in the video is a throw-away development placeholder. The ingame-ui however is not shown in this video as its currently undergoing a refactoring process.
As you might have noticed we allow multiplayer maps to be customized with players, while singleplayer maps have hardcoded players. This also allows for custom missions to implement optional player spawns for cooperative campaigns or other players to take control of prespawned CPU players.
What are we going to do next? First we will finish refactoring the new UI code as the UI must be extendable too intead of being hardcoded. Modules can contain new units, new logic, or a whole new UI. That's why we are currently rebuildings its entire codebase. When this process is finished, we will start on the entity scripts. In the video above you see some of the placeholders doing their magic. Buildings are built and animated, vehicles are moving and rotating. This is fully controlled by entity-scripts. The scripts however are dumb. Walls need to be connected, buildings should only build up when the owner has enough money, turrets should target enemy units and fire at them etc. We will focus on bringing the game to life in the next months.