Noble Crusade

posted in Korvas' Game Dev
Published May 22, 2017
Advertisement

Hello everyone,

I thought I would create a new blog post starting from the beginning of development for the 2D game I'm making called Noble Crusade. It's a RPG/ARPG based on heroes, monsters, and loot.

A quick video of the current state of the game:

To say the least, I've really enjoyed developing Noble Crusade and the adventures I've had in the process. Mainly, the experience of learning and being creative. I've spent most of my early development working on the engine. Specifically, rendering and collision. There was quite a learning curve in those two areas for me, however, I learned quickly and adapted to what worked best for the game.

Here is a short video showing some of what's happening under the hood in regards to collision in Noble Crusade:

After I implemented the render and collision aspects of Noble Crusade and I felt comfortable with it, I moved into character and enemy development. I quickly arrived at another road block, animations. As I learned more about sprite sheets, textures and how to store portions of a sprite sheet (frames) in memory and manipulate them, the charactes and enemies began to come alive.

Here is a sample of a sprite sheet for Gorvok and an animation of one of his sprite sheets in action:

s7788.jpg

r3355.gif

At this point I felt like I had a pretty solid grasp of rendering, collision, sprite sheets, textures, and animations so I moved into particles. Developing a simple particle engine was a lot of fun. I enjoyed taking what I had learned about collision and animations and I put the two together to create a basis for character spells and abilities moving forward.

Here is a video of a basic particle engine I made that is the basis for all particles and spells in Noble Crusade:

From there I was able to build enough sprites/sprite-sheets to implement a full map. I began to build maps and place sprites in 'random' locations. Enemies, trees, rocks, walls, and the player's sprites were all being placed dynamically on the map. This quickly turned into a nightmare. I liked the idea of randomly placed enemies, trees, and rocks. However, I did not like the idea of randomly placed walls. Sure, I could have created an algorithm that placed walls along the border of the map, but at that point it would have required quite a bit of refactoring to my code base. So, I realized that I could develop a seperate application where I could build maps. Which, in turn, would allow me to absract out a large portion of code related to map creation from Noble Crusade. This gave me the freedom to place walls, trees, rocks, enemies, player, etc. where I wanted. It also gave me the ability to create custom maps without having to place each wall based on a specific x, y location that was hard coded in. I could build a map in a seperate application and then export that map for Noble Crusade to load. Initially, it was quite a bit of work, but in the end it save me a lot of time and effort.

Here is a video deminstrating how the map editor/creater for Noble Crusade works:

As time permitted, I was able to implement items, inventory, UI, enemies, player, spells, and a map. Noble Crusade was coming alive and I felt it was ready for character progression. The next step, which is what I just finalized a couple of weeks ago, was to implement TCP and UDP requests for saving character data (items, xp, level, location, etc.). I could have saved the player data to a local file and load the data on start-up, but I really wanted to learn about server/application communication. I had a little bit I.T. experience so I knew the basics of TCP and UDP, but I had never implemented them in code. To make a long story short, it was another learning curve that really stretched me. In the end, I was able to implement communication from Noble Crusade to a TCP/UDP server with multiple updates/second that saves/retrieves to/from a database. It was a huge accomplishment for me and left me feeling pretty good about where Noble Crusade was at.

This brings me to the current state of Noble Crusade. I have quite a bit of plans for Noble Crusade. Which is why I wanted to start a blog here and share the future development with the community. I hope that some of you will find this blog interesting and can learn a few things with me along the way!

Some of the upcoming milestones I have for Noble Crusade are: implement boss leaderboards (web dev), in-game chat, new bosses, new maps, new unqiue relics (items), buffs/debuffs, and co-op/multi-player.

For those of you who are interested, here are a couple of additional links related to Noble Crusade:

Greenlight link: https://steamcommunity.com/sharedfiles/filedetails/?id=929121287

YouTube Channel: https://www.youtube.com/channel/UCNWG3xIctYG2WRY1_hSQ2Gw

7 likes 4 comments

Comments

O-san
Very impressive! Being a one-man team can be quite a work load (speaking from experience). What frameworks/libs - if any, did you use for the respective parts... ie. GUI, network, rendering, resource loading etc. Are you writing in C/C++? Nice post.
May 24, 2017 01:57 PM
Korvas

Very impressive! Being a one-man team can be quite a work load (speaking from experience). What frameworks/libs - if any, did you use for the respective parts... ie. GUI, network, rendering, resource loading etc. Are you writing in C/C++? Nice post.

Thank you, O-san. Indeed it is quite a bit of work, but I do enjoy it! Noble Crusade is written in C++. However, I wrote the map editor/creator in C# along with SFML.Net. The server is also written in C#. As for libraries in Noble Crusade, I'm using SFML for managing (drawing, loading, and manipulating) sprites, textures, audio, and TCP/UDP requests. I'm also using libcurl for some initial login purposes. Everything else is done internally.

Developing, editing, and updating the GUI in C++ can be quite tedious at times. Do you have any suggestions/advice/libraries to help ease the pain managing the GUI?

May 24, 2017 04:52 PM
ferrous

qt seems like the typical choice for C++

May 25, 2017 07:03 PM
Korvas

Thanks, ferrous. I'll take a closer look at qt.

May 26, 2017 09:27 PM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement