Friday, April 10, 2015

Some screenshots of the "new" Lightbringer Development System

As an early demonstration, I've decided to show some screenshots of the so-called "new" Lightbringer project, which by the way doesn't look like a roguelike anymore. It's more like a traditional RPG like Final Fantasy. These are mostly screenshots from the development system as can be seen in the first one.

Development system main menu

Item pool

Enemy pool

Block graphics editor

Magic spell selection

Battle menu

Game engine

I just wonder if all this will be the same after one or two months. This was all done in about 3 weeks. Hope you enjoyed this little inside info :)

Sunday, March 15, 2015

An Endless Cycle

Hello, dear people who are interested in this project.

In the last few weeks I've come to believe that there is an endless cycle going on concerning the development of this little videogame. I've been working by myself on this project since 2011, and now 4 years later it seems like it will never get finished, because I'm constantly changing ideas, concepts, engines and programming libraries.

To give you an insight about this issue, I currently have multiple versions of this project (5 to be exact) sitting in my hard drive inside a subfolder of my software projects folder, appropriately called "Archive", all of which have been abandoned at one point or another because of major changes that could not be accomodated within them at their current stage of development.

Unsurprisingly, the latest version of the project is now being archived. The reason being that I am currently working on a graphical user interface library called SGI (Simple Graphical Interface) which is built on top of SDL and some of its extensions (namely SDL Image, SDL TTF and SDL Gfx). This is expected to be the new graphics library upon which the new version of Lightbringer/Rhye's Quest will be built.

I can't tell whether or not the next version of the project will be the definitive one, and I'm not going to assume that it will. I guess the only thing to do is keep working on something until I'm satisfied with it, so I can only hope that the next version will make me happier and that I can release this game before 2020 :)

As a last note, the latest version of this project is now (partially) open-source and is hosted at SourceForge (I have already written an article in this blog talking about it). I wonder if someone can do something useful with it?

Thanks for your attention!

Thursday, December 4, 2014

Demo Video #1

First demo of the new version of Rhye's Quest, after over one year...

Saturday, April 6, 2013

Technical info about the development of Rhye's Quest

I've recently written a long and technical article about the development of this game and its inner workings. Check it out on my personal blog (In Portuguese): Analisando o desenvolvimento de Rhye's Quest.

Wednesday, March 27, 2013

Demo Video #1 (Proto)

Hello! This is the first demo video of Rhye's Quest (the "old" prototype). It's very short but in it you can see many aspects of the game that I have already implemented. Still, the game is far from complete. I could probably say Rhye's Quest is less than 5% complete... But there you go!

Saturday, March 9, 2013

Dialog system implemented

Dialog system just implemented.
That one was so easy!

Me talking to a demon

Monday, February 25, 2013

Battle System finally implemented!

Hello there!

After a long time without working on the game, I've finally implemented the battle system. The character is now able to fight, suffer damage, kill enemies, gain GP, experience, and level up. I still need to implement all of the different enemy classes, because now there is simply a basic enemy class from which all other enemy classes will inherit. I'm testing the battle system with only this basic class. After I finish the battle system, the next step will be designing each one of the 1024 maps of the game. So it's still going to take a LONG time until the game is 100% complete... The following screenshot is from a test map:

See you soon with more news!

Monday, December 24, 2012

New engine, new game editor

It's been a long time since the last update. Well I've been rather busy lately so I haven't had much time to work on Rhye's Quest. But, as I am now on vacation, I've decided to go on with the development of the game.

The game engine has been redesigned. Again. What's new: the addition of object bytecode, and other minor changes. Now all game objects (except for the player) have a programmable behavior. That is, every object has a "program", a series of bytecodes that the engine "understands", and when the game is running, the engine visits every object on the current map, in both layers (bottom and top), and tells each object to execute the next instruction of its program. That means the game engine is a lot more flexible, because object behavior can be defined in the game editor through bytecode.

Since the game engine has changed (significantly), so the game editor has also been redesigned to accomodate those changes. Also, I have added several utilities to make my life easier when designing maps. The game editor has now the following functions: World Editor, Tile Selector, Color Selector, Tile Editor and Bytecode Editor. You can see the screenshots below (click to enlarge):

World Editor

Tile Selector

Color Selector

 Tile Editor

 Bytecode Editor

And that's all for today.  I'll be tweaking the editor and the engine during my vacation time. See you soon!

Monday, July 16, 2012

Like a God - Planning the World of Rhye's Quest

Hi. I've been busy with my new development tool called World Planner. I'm using it to plan out the game world.

Even if the entire game is mostly predefined (unlike most roguelikes), there still is a lot of random content. What I'm currently doing is creating the layout of the world and specifying what exactly will be in each "scene". What I call "scenes" are the areas of the world, like "arenas" or, simply put, the places where things happen. In fact, each scene corresponds to what you will see on the screen at any time, because each scene fits completely in one single screen. This work of planning out the game world in this tool is preliminary and merely conceptual. This "world plan" will be mainly used to make decisions about the implementation of the game. I started working on this because I had too many doubts about what kinds of content I would put in the game, like what kinds of graphics, what puzzles, what enemies, objects and everything else. The World Planner helps me clarify my ideas and write down everything that I have in mind about Rhye's Quest.

Below you can see a screenshot of the World Planner tool as I was working on the overworld plan. Each cell in the table is a scene within the game universe, and as you can see there are 1024 distinct scenes in total (32x32, although the bottom half is almost completely blank now, except for the last line). I can't tell you exactly what the three-letter codes mean, but they help me remember about some details of the world without having to double-click each cell to see what's inside. This is absolutely NOT a definitive map of the game, because I'm constantly changing the layout and position of the existing scenes, creating new scenes and removing the ones that I don't want or care about anymore, so when you actually play the game, the world will probably look a lot different from what you see today in this map...

Well, that's all for today. Oh, one more thing: I'd like to say that the entire concept of Rhye's Quest comes from a childhood dream of creating an RPG game, which I have been trying to materialize since I was around age 12. So that's the reason why I spend so much time and effort in this project, even if it means that I have to develop dozens of development tools and be extremely careful during the development process. I don't really care about how long it will take to develop this game, but it will eventually come to life, soon. :)


Wednesday, June 27, 2012

Changing paradigm: From structured to object-oriented through TDD

Hello, world!

As I said in an earlier post, I had to rewrite the poor old engine from scratch so that I could replace Allegro for SDL. And then I developed XTiles, an SDL-based library designed for building and rendering colored tiles on the screen. Now I'm using XTiles to handle the graphics module in this new version of the Rhye's Quest project.

Another unexpected change was the programming paradigm. Originally, Rhye's Quest was a structured program written in the C language, with some C++ features. But now, I've been developing the game completely in C++, applying good object-oriented concepts and techniques, through a programming methodology called TDD, which stands for Test Driven Development.

For those new to this TDD thing: in short, it's all about writing failing tests first, and then writing code to pass those tests. By passing all the tests your code is proven to work correctly. As an additional advantage, the tests serve as the most faithful documentation of your system. This is an interesting approach that I have learned during my professional experience in the software development industry, and I certainly recommend it to every programmer regardless of programming experience level. There are several frameworks in C++ for testing your code, and for this purpose Rhye's Quest uses CppUTest, which is extremely simple to use.

I've been working day and night in this project, and so far I have created the following artifacts (among others):

- The Screen module, which is partially a wrapper for XTiles and every video-related SDL function calls. It's mainly responsible for drawing on the screen.

- The GameElement hierarchy. GameElement is the base-class from which every element of the game inherits. A GameElement is simply an object which encapsulates data and behavior common to all types of elements, such as visual appearance, position in the game world, basic movement, calculating distances and handling collisions between elements, etc. For example, I have a SolidElement which implements the handleCollision in a way that the colliding object can't go through it, and I also have a PushableElement, which implements handleCollision in a way that it moves in the same direction as the colliding object (generating the effect that it's being "pushed" around by the colliding object). I can have whatever effects I want just by subclassing GameElement and overriding the handleCollision method, since it's virtual and polymorphic.

- The ElementFactory class. This is simply a factory of game elements. Whenever I want a game element of any type, I just ask the ElementFactory and it will construct one for me. Since I wrote this class, I don't have to care about the process for creating any type of element, because the factory knows how to do its work.

- The World container. The World class is responsible for encapsulating and managing a list of (pointers to) game elements. If I want to access, manipulate or destroy any element in the World, I just have to ask the World for it (it sounds like a god, but it's not).

Those are the main parts of the program that I have developed until now. There are of course several utility classes such as Random for the random generation of values, among others. What I'm doing now is writing some tests that were missing, and refactoring my code so that it's prettier, clearer to understand and easier to maintain.

Well, that's all for today. Development of Rhye's Quest is going strong and as soon as I have a working demo I'll upload it so that you can playtest if you feel like it :)


Wednesday, April 25, 2012

Total rewrite: from Allegro to SDL, a long way to go...

Hey, it's been a long time...

Well, I've been rather busy with my personal life lately so I haven't had much time to develop Rhye's Quest any further. That's why this blog was so out of date.

I have decided to rewrite completely the game engine, using SDL instead of Allegro. That's right. Because I have developed a small library called XTiles which runs on top of SDL and allows me to easily draw colored tiles on the screen. Also, SDL is portable, and more popular than Allegro. And there's more: I don't like the latest version of Allegro.

So guys there's a long way to go. Now I'll have to deal with this "Allegro to SDL" issue and it will probably take a long time.

I'll be back with news (someday, hopefully)!

Monday, January 16, 2012

Developing the Engine: The "Test Chambers"


Last weekend, I started development of the game engine. In fact, I had already created most data structures for the engine several weeks ago, but I spent last weekend working on the engine functions in an experimental manner, that is to say everything I've done so far was merely meant to try several approaches so that I can have some ideas about how I am going to implement the most crucial aspects of gameplay and the interaction between different objects.

For that purpose, I have built some really weird maps which I call "Test Chambers". The Test Chambers have almost every object possible in the game world. Then, I put the player character in one of the rooms and start to play around with it, so I can see if everything works as expected.

So far, I have succeeded in moving pushable objects around the rooms. From this, several problems arised such as how to have the player push one object from one room to the next. Currently, this does not work, since the object simply disappears when pushed to an adjacent room.

I have also experimented with other game features such as swimming, diving into a submarine room (losing oxygen in the process) and swimming back up, walking across swamps, sinking in quicksand, among others. I have even experimented with the player being able to board a raft and sail the sea, but it didn't work exactly in the way I expected, so I'll be trying other approaches in the next weeks.

You can actually take a look at my current work. The following images are screenshots of some curious, queer-looking Test Chambers. Be aware that these images show an experimental version of the engine, so even the interface is very likely to change in the near future.

The Test Chambers

Well, that's all for now. I plan to release a playable demo as soon as the engine feels mature enough. Later!