This year I did my Internship at KKM Interactive Entertainment as a programmer. KKM Interactive is a small Indie-Game dev studio based in Berlin which develop their first game called "Daiishi Dash". It is a 2D jump - n - shot - twin -stick shooter where you play a girl named Aiko. Aiko lives in Fukushima and loves her hometown. But one day the nuclear fallout in Fukushima destroys her hometown and now she wants revenge for this catastrophe. She starts to find the people who are responsible for this and while shes doing that she has
to fight against crazy irradiated animals.
Watch the Trailer (Alpha footage)
My tasks at KKM
At KKM Intertactive Entertainment I was responsible for the saving system, some Enemys and the UI system.
I will talk about the saving system because this was one of my biggest responsibilitys. I will show the main part of the SaveManger which handles the most of the savings.
At the beginning of my intership the team didn't have a save system for the game. So I offer to build the hole save system for the game. It was a new big responsibility for me becaue I never build a complexe save system for a big game. So I started to use the BinaryFormatter to Serialize the relevant data.
First of all I create a new class named PlayerData where I stored the values which are holding the save data later.
Then I created a new SaveManager class which has two functions SaveData() and LoadData(). They wanted to save different player progresses and because of that I added a second parameter to the SaveData() function which is an int and called "whichPlayer". Later we can pass the current player to the save file name to get the correct file when we load it. So the first player would have the save file name: playerData1.dd.
So to load this file again we use the LoadData() function. LoadData() has a parameter which called "whichPlayer" too. Here we pass the current player as an int and the we check if for example "playerData1.dd" exists. So if file exists we create again a new BinaryFormatter and FileStream. Important is to know that we have to write at the FileStream line "FileMode.Open" because we want to open the file at this stream to read out the values. After that we create a new PlayerData class and deserialize the file which holds the values. After that we can pass all values to our specific values from the GameManager.
This SaveManager handles most of the saving. There are more stuff to save where I use PlayerPrefs in combination with BinaryFormatter. For example to save best times for each level of each player. Furthermore this SaveManager handles the currentWeapon which the player last used. And many more.
So it was a great experience and I learn a lot about saving in games!