re:Creation week #5. Improved level format and saving system.

Previous weeks:


Last week I’ve posted this screenshot of re:Creation to /r/IndieGaming to know what people think about new graphics. I expected 2 or 3 people tell me something like: “it’s good, keep working” or “that’s bad, keep working”. The thread got lots of upvotes and comments and there was lots of constructive critique which I didn’t expect. Some people said the game looks really great. This was really awesome and now I know in which direction art style should be moving.

And here’s what I’ve been doing this week.

Continue reading

re:Creation week #4. New graphics, chests, doors, screen transitions

Previous weeks:

This week was totally awesome!
Dmitry has redrawn lots of graphics and the game looks a lot better now.
We’ve also decided to make character proportions more realistic which is also great.
Here’s the graphics comparison

Continue reading

re:Creation dev log. Week #2 and #3. AI stuff and vacation

Week #0: Preparation

Week #1: Things are getting bigger

Week #2 and #3. AI stuff and vacation

I started to prototype the first “real” level of the game. As I was working on it, I realized all the flaws of level editor and features it lacked of. So I worked a lot on the level editor!

A lot of time was also put in optimization. Release build was always working at 60 fps without a problem, but as an object counter grew bigger and bigger Debug build started to slow down, so I decided to optimize my game a bit and now it’s running at 60 fps on Debug too. Neat.

I was also working on AI for some time. First I got NPC to go to the specified point of map.

I accidentally swapped walking animations and results were hilarious.

Continue reading

Using Lua with C++. LuaBridge makes everything easier. Variables and functions

Why use Lua?

Using scripts with C++ is great. They provide lots of flexibility and free you from using those .txt files for your configuration files and also let you write complex functions. You can modify your scripts without recompiling. This is really important because you get distracted less often. Even a short compilation can break your concentration.
And you can even design your system that even those people who don’t know how to code can create new scripts or modify existing object behavior without modifying your source code! If you want to know more reasons of what makes Lua great read the beginning of this article.

I wrote about how you can develop your own binding library in previous chapters. But this library is very basic, it doesn’t have the power some other libraries have. It’s really hard to write your own binding because it usually involves lots of templates magic and meta-programming.

I’ve tested lots of libraries and found LuaBridge to be the most awesome. It has MIT license, doesn’t have any dependencies(like Boost which some libraries use) and it doesn’t require C++11. You don’t need to build it. Just drop LuaBridge folder in your project folder, include one header and you’re ready to go!

Continue reading

re:Creation Week #0: Preparation

Week #1: Things are getting bigger!

This week I don’t think I’ve accomplished something really huge, because I’ve decided to finally rest after month of studying hard. But now I can work almost full-time so lots of changes will come, I guess.

But still, I’ve managed to develop some cool stuff.


This isn’t really first week I’m programming this game. I’ve spent some month on engine and level editor, but this is the week I’m starting to see the game itself!

It’s called re:Creation. It’s oldschool top-down action rpg where you play as undead knight who wants to seek revenge for his death and free people from evil wizard who used trapped demon’s soul as the power source for 800 years.  Here’s what was implemented:

Continue reading

Last month and plans

The last month was great. The exams were tough and I spent this whole month studying hard but it was worth it! I successfully passed all exams and got pretty awesome grades!
Complex analysis – B
Differential Equations – B
English – A
Discrete mathematics – A
Physics – A


Now I have two months of freedom but I won’t waste my time. I’m going to work hard on my game most of the time.

Here’s what’s done at the moment:

  •  Basic entity/component/system
  •  Scripting (mostly for loading different entity properties)
  •  Level editing (level editor is going to be pretty cool! Trying to make it as comfortable as possible)

  •  Basic combat, AI and co-op

  • Resource manager

Continue reading

Cave Story: the most important indie game

I love Cave Story. This is a truly legendary and awesome game.
But instead of saying why it is so awesome as a game (lots of reviewers did that already) I’m going to talk about its importance for indie scene and for me personally.

First of all, indie games were not as good as some of them are now. Yeah, there were lots of gems but mostly they were short and simple flash games. Some of them were good. Some of them were great but none of them did what Cave Story has managed to do. Cave Story was comparable with AAA retro games. It is considered to be not only one of the best indie games of all time, but one of the best games ever. This game was one of the reasons indie scene began to grow so quickly. There were other important games but most consider Cave Story to be the most important. “Mona Lisa of indie games” as someone called it on Reddit.

But there’s another reason this games is great. This game is truly inspiring. It’s a clear example of what one person can do with enough skill and patience.
Daisuke “Pixel” Amaya, the creator of Cave Story, did it all himself which is truly amazing. Everything: programming, music, art, level design etc. And he did it in his free time, not working 8-10 hours a day as some of the indie developers do. He was studying in college and later working as a software developer. It took 5 years to finish this game. 5 years is a really long time and it’s incredible how much patience you should have to develop something for that long. Most people would abandon this project or make its scale smaller, but Pixel didn’t.

Most people think that indie games (even big ones) are made by one or two guys in their free time and with almost zero budget. It’s not true, however, for the bigger titles. Jonathan Blow, for example, spend $200,000 on Braid and you can find some other examples. Super Meat Boy and Fez developers were working on their games full-time. I can’t work on my game more than 2 or 3 hours a day, so Cave Story is a good example that you don’t necessarily have to work on your game 8-10 hours a day.

Cave Story got popular by itself. There was almost no marketing. Indie developers spend lots of time today trying to get as much people as possible to know about their game using social networks. But Pixel didn’t do it. He just quietly released his game and it was later discovered by lots of gamers getting its popularity because of its greatness. Cave Story was released in 2005. Just imagine! There was no Twitter, YouTube, Twitch these days. Facebook was just starting. It was very hard to get people to know your game. And it makes Cave Story’s achievement even more impressive.

For those who haven’t played it yet: I highly recommend you to try it. Original version is free and Cave Story+ version is on Steam for $10.
I love to listen to Cave Story OST when I’m developing my game. It’s very catchy and enjoyable but there’s one more thing: it feels me with motivation and hope that maybe someday my game will be recognized and loved by players. It will be one of the best things ever.

Using Lua with C++(Part 3)

Part 1. Why Lua is great and why you should use it. Writing simple wrapper/binding and using Lua for configuration files

Part 2. Getting arrays and calling Lua functions from C++

Part 2.5. Template getArray function and other modifications

Part 3. Calling C++ functions and creating C++ objects

I am very excited to write about this topic because it shows how great Lua is. While Lua is great for configuration files (as I’ve shown in my previous tutorials) it’s even greater when you use it to call C++ functions and you can even create C++ objects classes and modify them with Lua (I’ll cover this in part 4)
Let’s begin.

Note: if you don’t know about how Lua stack works, I recommend you to read this chapter of great “Programming in Lua” book :

Continue reading

Z-order in top-down 2d games

This tutorial is language agnostic. It doesn’t contain implementation, because it may differ a lot between different languages or frameworks. Ideas themselves are what’s the most important, I think.


So, what is z-order?
Z-order is an ordering of overlapping 2d objects. Look at the picture:

Rectangle B is drawn after rectangle A. The result is rectB is drawn “above” rectA. RectB is said to have higher z-order than rectA. Really simple.
Continue reading