Beginnings


Today's focus has been primarily on refining the map mechanics for our upcoming project. While Unity offers its own tile system, I've chosen to take the more challenging route, driven by my desire for complete control over our systems. Thus, I've been hard at work developing our custom map system, comprised of several key modules:

ModuleProgress
Grid Ready
Saveable tile information 70%
Placeable objects on tiles 50%
Map editor 10%
Isometric camera movement 100%

In my project, the map design is carefully planned to be pre-created, avoiding any procedural generation. Therefore, I'm focused on developing tools to facilitate in-game map editing. This decision not only speeds up the development process but also lays the groundwork for future player interactions.

One of my primary goals is to empower players with the ability to shape their environment. By investing time in creating these editing tools now, I'm not only easing my workload but also creating integral features for players to build and modify the world as they see fit.

Unlike fixed-size maps, the map in my game has no defined limits. Similar to Minecraft, as the player ventures further, more map is generated dynamically. However, in my case, only basic information about empty tiles is created initially. This strategy gives me exceptional flexibility when expanding the playable area, ensuring a dynamic and immersive experience for players.


Undoubtedly, one of the main challenges was planning so that each tile has dynamic information that can be saved and read both in editing mode and during compiled gameplay.

My usual workflow involves the use of ScriptableObjects that contain basic information along with a system that only saves the ID as a string. Upon loading, I simply link the ID to the ScriptableObject. However, this system has a limitation—it doesn't allow each block to have unique information.

To overcome this limitation, I extended many functionalities to enable saving metadata as text for each block. Now, the ScriptableObject features an information template that the block copies and can edit. When saved, this information is serialized as text and can reconstruct itself from that text. 

The functionality can be summarized as follows: I have an object of type "Property" to which you can add different values like variables.

Afterward, these properties can be added to the information tables of each object. On their own, these properties have no effect on the block. However, later on, I can add functionalities for each effect. This approach is also highly versatile for modding purposes.

That sums up the beginning of this project, which has seen three days of uninterrupted work. My next focus will be on developing the world editing system. I aim to incorporate a GUI for selecting blocks and then painting them onto the terrain like a brush. That's all from me for now. When I make more progress, I'll be sure to write again. Take care and happy coding!

Get Z-Engine

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.