Monday, May 23, 2016

Cards of wild game

'World of balance' is a gaming solution which includes lots of single-player and multiplayer games. The theme of 'world of balance' is animals and their food chain and all games are conceptualized using that theme. The game lobby is used to login and interact with other players or join their game-rooms.

Cards of wild is part of bunch of mini-games from 'world of balance' game stack. Its a 2-player game where both players are given deck of animal-cards to play with. The cards can attack opponent's card as well as his/her tree('tree of life'). Each card and tree has specific health points and using animal food chaining rules one has to attack opponent. Whomsoever kills the tree, wins the game.

We have a game-lobby server which is common for all the games and Cards of wild has its independent server which receives all requests related to our game. We used unity as game-client and Java for server development. Our game runs on android devices as well.

Github wiki: https://github.com/worldofbalance/wiki/wiki/15.-Cards-of-Wild

Github organization: https://github.com/worldofbalance

Rules for playing Cards of wild: https://github.com/worldofbalance/wiki/wiki/15.-Cards-of-Wild#game-overview

Android apk: https://slack-files.com/T0MJR5JMN-F1A84GJ1Z-7e30545b88

Game demo(best viewed in full screen):


I was team-lead for this game as well as server developer. Main challenge for this game was to refactor existing code. 'World of balance' game-stack is developed over years by students taking multiplayer game development class. I sincerely appreciate their efforts to develop all the components of client and server and make it distributed. Especially card of wild(COW) had excellent class hierarchy in-place and I could totally understand developer's vision but lack of comments, documentation, version control system and Unity's limited debugging capacity made it difficult to grab at first. Also, each game did not have separate repo or folder and client files were scattered over different folders and repetition of same files made it even worse.

Client code was combined and server solution was independently working and that was a problem! Because server was independent, it had all common code like login repeated. So I had to merge it to existing repo for making it more manageable but still run it individually! My team-mates who were working on client side also had hard time with Unity.

At the end, it was a learning experience since I had multiple hats on my head. Apart from team management, their communication and meetings, I took initiatives in class for organizing server code or implementing simplified client-server communication logic so that other developers can also get benefits. We did pair-programming for hours with team-mates first time and it was fun. I took deep dive in gaming world this time and got to know how little things like colors or sound or placements of objects matters! 

No comments:

Post a Comment