Gates of Steem - Steem Monsters game jam submission
You can find my game on steemgg!
Gates of Steem is a Steem Monsters themed RPG with Steemit integration, which means you can make an impact on gameplay on steemit by commenting and voting!
So let's dive into how the development went and what has been accomplished. My main focus will be to present you my experience during the development process and the tools what I used.
When I started working on the project after some initial research (well I knew steem but didn't know anything about Steem Monsters yet) I had the following ideas in mind:
- it should be an RPG with the summoners as our hero
- the game should have steem blockchain integration with impact on gameplay
- it should be 2D with predefined move-set and some - but not extreme - difficulty
Generally, I just like 2D RPGs, I am also a big Dark Souls fan :)
I also realized that I will be quiet limited on time, because I had Saturday and Sunday and then in a good case I 3-4 hours after work on the weekdays.
the tech stuff - steem integration
I have experience in Unity therefore the game engine was not a question, but my experience consists of mainly VR games and some non-game developments. (yes, in a game engine :) ) Therefore the 2d WebGL with Steemit integration looked like a good learning experience. And it was!
In the meantime one full day (Saturday) has passed.
So I started to desperately search for another solution, thankfully I found an (or maybe the) online steem API called esteem, which was a tremendous help for my work. With standard GET API calls the integration was pretty easily done besides standard things the only external library I used was Json.net which was also new to me by the way :)
So by ~2PM, Sunday I was very happily receiving content of posts from Steemit to Unity engine.
a bit less techy stuff - animating 2d characters with bones
As I also mentioned above, I did not have too much experience in 2d before, but from 3d I knew that I want my characters to have bones, so they will animate flowlessly. This was not as easy as I thought :) For 2d there are external tools for character bones, but I remembered I saw some fancy 2d bone features in the new Unity beta release (2018.2).
I could write a whole article by now about how to add bones (would someone like that?) to a 2d character, however just to summarize the main steps:
First you import an image
Then you design the bones themselves in a new sprite editor feature, somehow like this picture below, but ideally your character will face right. This made things a bit harder later, but still it was more manageable for me - as someone very far from a graphic designer - than making sprites.
You design the geometry, mainly the borders for the character which can be done automatically, but I found some refinement is always necessary afterwards. You can create new edges and vertexes easily, it just takes some time and patience.
and lastly, you have to map the model to the bones in the Weights setting. The automatic generating was never fully working for me, so after that some tuning was also necessary.
After all the above is done for a character, there is no need to modify anything on the image to move the character, because it is easier to move just the bones and record all types of movement.
By the time I figured all this out (this is very new, therefore there are very limited resources about it yet)
steem integration into gameplay
After I set up all the above I thought I had a good start, so next I have to create some actual gameplay. I wrote all the scripts for HP, mana, movement and the two types of attacks from scratch, however figuring out 2d bones, actually setting them up and creating the scripts for gameplay was harder than I thought.
So I had little time for actually integrating blockchain into the gameplay, despite my world-changing plans of semi-manual blockchain writing and saving of characters to steem. (player receives a hashed key so she can save by commenting) Therefore I made the decision to create two use cases for proving that this can be done:
Reflecting on the initial goals, all of them were achieved in some manner, maybe the steem integration is only a proof of the concept, but it actually is working.
So to summarize my experience, it was great to push myself to actually finish something in a week despite all personal things and especially despite having a full time job. I learnt a lot, which I will also be able to make use of in later projects. I already have so many ideas what I could make next for steem :)
I would like to thank the steemmonsters team for making all this possible, this jam was a lot of fun!