It looks like I've found a place where I can begin posting the progress of my game development. Let me start by talking about the game I'm currently developing. The game will be a top-down 2D RPG/ARPG game with a similar look and feel to Diablo 2, Diablo 3, and Path of Exile. The game is being developed using C++ and SFML. There is much more development on the way, however, so far I've managed to finish the 'engine' for the game which mainly includes physics, collision, particles, and rendering. I've also extracted out some of the map details by developing a map builder (using C# & SFML.Net). Currently, I'm finishing up the UI, entity stats, items, experience points/levels, and inventory. My short-term goals are to persist character progression along with a functioning website. Although this is a side project, it began as curiosity and has turned into quite a learning experience! As development progresses, I will continue to post it here. Below is a video of the current state of the game. There are videos of my progress up to this point on my YouTube channel as well, if anybody is interested.
Latest Update - UI, Items, Stats, XP/Levels:
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:
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
I've added a new spell animation for 'Flicker'. Flicker now leaves behind a blazing trail which causes damage to enemies left in the wake of the Wizard. I've also added an adjustment to 'single' particles (single particles that remain stationary). The particle's texture slowly turns transparent until it is completely removed (particle destroy timer has been reached). The new spell animation for Flicker and the 'single' particle adjustment can be viewed in the video below.