Neko's Destiny

31 December 2009

The question of Neko’s purpose has been boiling around my head for a while now. One of the ideas that seems most reasonable for me is to change it’s role from a framework to a collection of simple to use but powerful general purpose utilities. This solution, while may seem to generic, allows me to integrate it’s future with both my further ideas, as well as ChaosForge’s second C++ large-scale library, Valkyrie…

· · ·

Neko’s birth and initial purpose

I won’t lie to anyone — the jump to C++ was also the first step on leaving the roguelike development world, and moving on to more mainstream gaming projects, while carrying the torch of roguelike enlightment. That’s the reason of confusion, why the library for roguelike’s isn’t named Valkyrie, while a C++ Valkyrie is rumored to exist.

Neko was planned as a training project in C++, a way to get into C++ game development, while testing a few solutions in the C++ field at the same time, hopefully creating some code that could be reused in Valkyrie in the future. As a training project, Neko was aimed at developing strictly roguelikes, with a possibility for eventual 2D tiles. Also it was meant to provide me with a tool to quickly develop roguelike concepts, and slowly develop roguelikes that I’d like to see some day (DoomRL 2).

C++ Valkyrie on the other hand is the (over)ambitious 3D game engine project, that hopefully would become the base for StarDreamer and others.

Hence, Neko was supposed to be a small, and quick project.

Change of heart

However, things don’t seem to work that way. Apart from the problems mentioned in the previous post, there’s the question of doing things twice, once for Neko, once for Valkyrie — and even if I copy, then I’d have to maintain both copies, what is really a pain.

Hence it seems that if I moved onward to Valkyrie, I’d need to abandon Neko. And somehow this idea saddens me.

So, how can we have the best of two worlds?

Neko Standard Library

So the idea I came up with, is redesigning Neko to be a collection of game-related small STL/boost-like utility libraries. They’d be designed for ease of use, power and rapid deployment. They’d still base heavily on STL, but maybe also on Boost this time. Moreover, they’d be as much independent from each other as possible. The Neko name will be kept in of Neko’s it’s namesake, and taking advantage of the nice and short namespace name.

In this form it will be both useful for roguelike development (I’ll build a as yet unnamed framework over it), as well as for Valkyrie development (which in this picture would be the 3D engine itself, without utilities, yet using neko::vector3<float>…).

In short, Neko would become boost::gamedev, yet on a less generic scale than boost’s designing their libraries.

The really great part would be that things like neko::xml, neko::lua, neko::gl, or neko::gz could be used independently, filling a niche that I couldn’t find on the internet.

And yeah, the question of the roguelike layer’s name is now open ;).


We’re at the years end, it’s time for decisions. What will 2010 bring? The year of ChaosForge I hope!


Tavana · 31 December 2009, 02:11

I like this idea. Very much so. Regardless of if it’s exactly where you wanted to go, this is a much more thought out idea. I love how the process of getting to where you go makes you realize that where you wanted to go isn’t exactly where you thought it was.

Being able to step back, assess a situation and say “I was wrong. Let’s change this.” is perhaps the most valuable skill I’ve ever learned. Kudos to you for doing it.

Now c’mon, Griffith, let’s get you that Castle in the Sky!

Popotam · 4 January 2010, 16:41

If your aiming for: 1. rapid developement (time, time, time!) 2. development ease for inexperienced open source developers 3. fun
then you should give a try to python.
You won’t have to make any zlib or xml libraries, because python is deployed with those in standard library.
And you don’t need to bother with hooking up lua scripting, because you get a python one for free.
Why don’t you try out python by writing a 7DRL in it?

Kornel Kisielewicz · 5 January 2010, 01:02

C++ is chosen because it’s going to be used for further (non-roguelike) project. And for high-performance 3d, Python is too slow.

BTW, I’d probably go with Ruby or Lua instead of Python ;).