SPoM - Developer's log 02


Project changes

 

Version d_1.01

Based on the testing reports I've made some gameplay mechanics and difficulty changes to the game.

 

Control changes

Character doesn't slide any more after stopping, and now is less likely the character will slide off the edge of a tile.

Also player now have control of movement during jumping, not only during fall as it was before.

To grant better control I've reduced gravity force during fall.

Coyote jump is implemented to avoid a player missing a jump near the edge of a horizontal tile.

 

Difficulty changes

Changes to control have reduced gameplay difficulty by great margin, but I have also made some other difficulty changes and corrected some bugs.

Enemy attack cool off time wasn't working properly and is now corrected.

Both red and green "snail" enemies are now slower and have less health.

 

Version d_1.02 (and d_1.03)

This was a huge overhaul to the project. I wanted to rewrite dialogue and cut scene controls so the most of the data is removed from the code and controlled via CSV tables.

Parsing data from tables was not such a big problem as it was organization, defining hierarchy, rewriting current code and predicting which elements I will need for the rest of the game.

But before doing all this I needed to implement a localization system. When I worked on it before it wasn't part of Unity, but now it is and this definitely quickened the process.

Unfortunately I needed to change the font. I've found a similar font to the one I already used but then I needed to rearrange all text objects on each panel and other UI elements.

To test localization I've rewritten everything in Croatian.

After all this I was finally able to start working on a new dialogue and cut scene system.

Current cut scene character control was part of a character class, so I needed to remove it and make a separate class - object CS controller. This class "talks" with cut scene controller and object attached, so it can be used on other objects I want to animate (for example in this demo on animated jail doors object).

Depending on the complexity of an object this class activates many functions but the most important one is the ability to change the attached object's state. States are indexed and complex objects can have many while simple object's can have only one (for example jail doors can be opened or closed - one state).

To make level designing easier for each cut scene and for comments I've made a separate game object as a child of a cut scene controller object.

Scripts on these objects read special CSV tables and based on localization tables already in the project, pull and rearrange data to be used in the cut scene controller.

For each cut scene information is divided into three separate sets.

Those are: dialogue data (shows dialogues), state data (controls animated objects) and camera data (controls camera).

Not all sets are needed - for example camera data in some cut scenes are not used since the camera is locked to the main character by default and a different lock is not needed.


Cut scene controller now looks much simpler than before. It uses data from the CSV reader objects to control cut scenes.


I still use separate classes for each cut scene. Maybe I'll change that later but because of specific situations on some cut scenes I have left this like that for now.

Sometimes I want to activate special events on some cut scenes (for example on the demo end Demo end screen is activated) and I'm not sure as of yet will there be any other special events later in the game development.

So this is part of the code that could definitely be more optimized and rearranged but I believe current setup will allow that to be done easily when the times come, since most of the cut scenes are calling three separate methods and in fact are just sending data.


For dialogue control CSV tables are holding data for string used and dialog box control, times for each of those and object which talks (Object ID).


State CSV tables are holding data for the function that will activate Cut Scene controller, it values and times, and for object this function is connected to.


Camera CSV tables are simple ones and hold data for objects to lock and times. I've added a function as changeable because there is likely to be more functions for camera control in the future.


Comments CSV tables hold data for comment strings, time comment is visible, object index, randomness of the comment showing (1 means always visible) and comment set index. If set index is 0 that means comment is not part of a set, in other cases comments of the same index sort will be shown randomly (for example set 1 has 3 comments and upon activation one of those comments will be shown).


In an ideal case I would make level design tables which have all the data incorporated (for example object names instead of objects IDs, functions list etc.) and this would avoid any potential errors and would make the process easier.

In an even more ideal case I would make a separate tool for creating CSV tables and this tool would have three timelines and ability to create keys with desired data connected to those keys.

For now I think this is ok and this entirely new cut scene - dialogue control system will make designing the game and implementing those parts tremendously easier.

So I'm happy that I can finally get back to making art and new levels!

Hopefully I'll do new levels with new gameplay mechanics before June.

Get Saving Princess of Mars

Leave a comment

Log in with itch.io to leave a comment.