вторник, 16 септември 2014 г.

Starting as a game developer - Part 2

If you haven't read the first part, have a look at it: Starting as a game developer - Part 1

So here are we again. It wasn't exactly one week from the previous post, but... I hope to start working more regularly in the future. Since the last post, I started the actual development of the game. Also a friend of mine: Teodor Mihov joined me so now we are both going to work on the game. At the end of the post I'll add links to his Github page. And no... he is not my brother, our family names are just the same.

I. The preparation

Before actually starting on writing code, we wanted to get to know Marmalade. It has some really useful tutorials and example projects, which are freely available once you download Marmalade. We ran through the tutorials and we had an idea how to begin. The actual game loop, the input handling techniques, drawing and scene managing techniques were all clearly described both in the examples and in the documentation, which made our lives a lot easier. We also found a few good books on Marmalade, which covered more in-depth topics.

II. The beginning

We created our project, linked it to Github (I'll add a link at the end of the post), and everything was ready for us to begin work. Teodor and I wanted both to work concurrently, so we had to split the tasks in a way that there would be no conflicts once we try to merge. I decided to start on the actual game logic, as I had a clearer idea on the basic game rules. He would start on building the architecture that we would later use to display the game and interact with it.

As I couldn't share my sticky notes with Teodor, we decided to find a website or software that would help us. Fortunately, there was a Reddit topic just about that in /r/gamedev: They introduced Trello.com. It is basically a board in which you can create "sticky notes", you can create groups, add checklists, images, labels, etc. We created 4 columns: Ideas, To Do, Doing, Done. And we assigned each other a different coloured label, so we can set flags who is working on what. And here is how it looks:

Then we started actually writing some code. We are trying to keep it as modular as possible and we are commenting everything, keeping the code clean and tidy. We started on our tasks, but we both got stuck, as we didn't have a main topic for the game.

III. The topic

I think the best way of agreeing on a topic for the game is to brainstorm a lot of ideas and then look at each one in details. That way you actually see if you like the idea or if it sounds boring.

We came up with a lot of ideas some of which including: a gardener collecting flowers, a miner collecting minerals, etc. But we both agreed on one topic: A small medieval village gets burned to the ground by a forest fire and the player's task would be to collect resources from the puzzles to rebuild the village. This way we can include a bit of story in our game, which, I guess, will make it more interesting and fun.

IV. The progress so far...

So far we have created a main menu from which you can start the game and play one predefined puzzle. The game looks like this:

We are no good at drawing and design, so hopefully we will find someone to make it beautiful! Behind this we have created all the little bits nice and tidy: resource manager, scene manager, input handler, puzzle game logic, etc. Now the only major thing that needs to be added is the game story. However, to do this there is one major thing to do: Differentiate between the difficulty of the different puzzles. There are some obvious rules like, if it needs more moves and has the same number of solutions, then it's more difficult. But the problem that I want to research is if two different puzzles with the same number of moves and solutions are of different difficulty. I will cover this in the next post.

This is for now. Stay tuned for more soon.

Here is Teodor's Github page: Github

And here is our game's Github page: Github