Gates of Steem - Steem Monsters game jam submission

in #steemmonsters2 years ago

Hello Everyone!

This post is about my game, Gates of Steem, a game I created for the Steem Monsters game jam organized by @steemmonsters

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.

goals

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.

About the steemit integration, I was sure that it is possible, however not so much if it can be fit into the one week  time-frame. Don't get me wrong, steem has excellent integrations for Python and JavaScript, however Unity works with .net and here came the trouble, but more on that later...

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!

First, I thought it's a good idea to start with the deepest possible thing, he blockchain integration. There are great resources online, for Python and Javascript, too bad unity only works with C#. I also have some Python experience so I thought that is a good choice to go with. I found a solution to integrate Unity with IronPython, so I thought the only thing to do was to integrate IronPython with steem. However after 5 hours of installing modules and searching install error messages online I realized there is a big issue, it uses a different compiler to the one I would need for installing Python for Steem. Although after another ~hour of research I found that it is possible to circumvent the issue with an excellent workaround which involved mounting some Microsoft ISO file and running a horrible amount of commands... I realized if I go deeper into this I may do a steem integration for Unity in 5 days, however no game would be produced.

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:

final thoughts

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!

I have used the dividers made by @calumam, thank you for your excellent work! The dividers are under creative commons license.

Sort:  

Being a developer myself i am amazed by the work you have done, You explained well all the developmental phases however i didnt get the Steem integration part. Gonna play this now. well done :D

thank you so much! I am happy you like it! I am planning to make an open source project for unity steam integration with unity soon so look out for an update :)

Thanks for sharing. I have many things to learn. Good wishes for you.

Thank you for your interest!

had to google that :) gracias!

Congratulations @phonebox! You have completed the following achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of posts published
Award for the number of upvotes received

Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

Do you like SteemitBoard's project? Then Vote for its witness and get one more award!

thank you very much it is an honor!