Показват се публикациите с етикет martin mihov. Показване на всички публикации
Показват се публикациите с етикет martin mihov. Показване на всички публикации

вторник, 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

събота, 26 април 2014 г.

Purpose of this blog

So I guess it was high time I created my own blog. First maybe it will be nice to introduce myself. I am currently a second year Computer Science/Software Engineering student at the University of Birmingham. In my first year I achieved very high results. I can say that I've been interested in technology my whole life and mostly with programming. When I was young I had the opportunity to have a really good teacher, who taught me the fundamentals of computer science and programming. This is maybe the reason why I am so interested in technology. I've learned and used a lot of programming languages, which include mainstream languages (Java, C, C++, C#), functional languages (Haskell, OCaml, Pascal), web languages (HTML, CSS, JavaScript, PHP, JQuery) and some others that I can't really classify (DTD, XML). During my time in university I've also learned about Software Engineering techniques, have improved my programming skills and have improved my knowledge about the Computer Science fundamentals.

Why am I doing this and why now? I don't know really. I am not really sure if anyone is going to read my blog or I am going to help someone with the information I post. However, I've noticed that blogs can sometimes be really helpful, as people in the IT sphere usually post about problems they have faced and how they solved them. I have benefited from these kind of posts a lot of times. And as I am currently gaining a lot of knowledge and facing a lot of computer science problems, I can post what my "adventures" were and how I overcame them. At the end, I would be happy if I've helped at least one person with this blog.

Also another reason is that I've currently been invited to work on two projects. One of them is a very big project, which is kind of secret and I cannot share a lot of detailed information about it, however I can share technical information, which I learn during the development. It will involve development using Laravel - a web framework, which looks really good on first sight, but is it really that good? The second project is maybe not really a project. It is just a few jobs that I am getting from time to time to work on as a freelancer coming from the same employer. They involve developing in Android and I've just received another task, which I have no idea what it is written in. I guess it is some kind of web framework, but as there are no comments, I cannot guess what it is. So here is my first lesson for you ladies and gentlemen: "WRITE COMMENTS WITH YOUR CODE!". At first it may seem like a waste of time and space, but after writing some comments and keeping your code clean and tidy, you'll see the benefits from it. Also showing your code to someone else will give them a really nice impression of your programming (and social) skills. It is not necessary to comment all your code, but a little bit of description won't hurt you.

I think that's it for today. How am I going to proceed with the blog? I am thinking of posting at least once a week about problems or interesting news/things I've learned during the week. If I have time and there is something interesting happening around me I would probably post more often. The opposite is also true: I'll not post if there is nothing interesting I can write about.

P.S. Maybe someday I'll try to make the blog more beautiful, but not now...