Pawns and Tiles: a javascript experiment

sapper_p2I love games in any form (videogames, boardgames, role playing games, …) and three years ago I decided to try to develop a strategic game in javascript, one vs one, turn based. I told my idea to a friend (Giuseppe Perrini), very passionate in 2D art, and he accepted to help me.

The idea was quite simple, here in very short:

  • A player can challenge another player choosing a map.
  • Every player has a roster of five pawns, and every player has to line up his pawns in a specific area that changes in every map.
  • Every player has to choose the pawns (every pawn has its own skills) from a side deck following one rule: he can’t put more than two pawns of the same type in the map.
  • Every player in his turn has a limited number of moves and the goal is to occupy some specific area and keep it as long as possible to gain points.
  • After 30 turns (15 for player), the player with the higher score wins.

In our first implementation we defined 6 kind of pawns

sapper_p2 Sapper
Pawn03 Sniper
Pawn05 Scout
Pawn01 Knight
Pawn04 Paladin
Pawn02 Pretorian

It was more like an experiment to develop in my free time and for my friend was a good excercise.
More an excuse to push we and our skills to the limit.

The video game development it’s not my job, so I didn’t even know if I could be able to achieve some result and so I decided to focus on the client side, postponing the decision about the server side.

After a couple of months we had a prototype fully functional on client side

pawns-and-tiles-1Here a knight performing a move action

What about the server side then?
My brother owns a linux server and he offered to host my experiment for free. I wasn’t in the mood to develop again in PHP so I explained him my idea and he accepted to help us in his free time.
He decided to use Yii.

The server side had to be very simple, I didn’t want in place too much data validation because I prefered to be able to change fast the rules of the game and test it just changing the client side. I decided to secure data once we were enough sure about the game rules.

So the server side had to deal with: login, creation of a game, a very base user profiling, store game’s data and a very soft validation just to be sure not to send rubbish or to avoid that a player could perform a turn in a game that wasn’t his own or perform a turn during the opponent turn.

We worked in this way for few months, after that, my brother’s time for this activity had a huge decrease, so he prefered to quit.

K01 Giuseppe concept art

But we had an alpha version fully functional.
I gave the link to some friend to start a test and receive feedbacks.

At that point I had worked on this project more or less 400 hours splitted on two years.
In those hours I even calculated the creation of a basic website, and a UI and UX for the game and website.

At that period I started playing with SignalR and I wanted to use it in the game and so I decided to use my brother’s quit as excuse to refactor a lot of things and change server side technology from PHP to .NET MVC.

The 2013 had been a very complex year so I didn’t find the mood and the time to work on this project, I continued to explore in theory a lot of possibilities, but sadly I didn’t write more code, only few refactoring.

Hoping the 2014 will be better, I recently showed the game to another friend (Marco Mastropaolo) and he accepted to help me with the server side and share the effort. Obviously, again, in our free time.

In any case this project went so far that I’d like to discuss it, go more deeper about the technology I used, showing code, the architectural choices, the testing approach (Unit, integration, acceptance) for the client side, but it’s not possible in a single post so I think I will put occasionally posts on this subject.

eMeleeDps3 eMeleeDps
Few Giuseppe experiments for the pawn’s style

eMageOther pawns experiment

core_a_wip_full_resA matte painting about the lore of the game.


6 thoughts on “Pawns and Tiles: a javascript experiment

  1. Pingback: Pawns and Tiles: Client Workflow | Agile. Angular/Js. Asp.NET & TDD

  2. Pingback: Pawns and Tiles: concerning the pawns. | Agile. Angular/Js. Asp.NET & TDD

  3. Pingback: Pawns and Tiles: concerning the Tiles | Agile. Angular/Js. Asp.NET & TDD

  4. Pingback: Pawns and Tiles: concerning the Skills | Agile. Angular/Js. Asp.NET & TDD

  5. Pingback: A platform game in angularjs | Agile. Angular/Js. Asp.NET & TDD

  6. Pingback: A platform game (more or less) in angularjs | Agile. Angular/Js. Asp.NET & TDD

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s