🎉 Celebrating 25 Years of GameDev.net! 🎉
Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!
When I started with this project, I thought one very big problem will be the 3D Art, I'm not an Artist, I'm just an average Developer. While I found MakeHuman for Human models and Mixamo for animations for Human models, which are great, there needs to be more, e.g. animals (I don't think I'll make …
In games with a physics engine, there is a constant force pulling an Actor down until it collides with the terrain or some other object (e.g. stairs or a bridge) -- the gravity. That's how actors are kept on the ground in these games.
ABx does not have a physics engine and therefore there is no forc…
As mentioned earlier, ABx uses a navigation mesh to find routes from one point to another. There was the suggestion to include static scene objects, such a buildings, into the navigation mesh, so the route finding algorithm (in case of ABx this is Detour) automatically navigates around those obstac…
In ABx a Player or NPC can move autonomously from one point to another. For example, a Player can click on a point on the Terrain, the client calculates where the mouse pointer hits the terrain with a raycast and tells the server to move to this coordinate.
To make this happen, the server performs t…
Some time ago I made a Behavior tree implementation for this game. While the implementation seems to work, the NPCs sometimes behave very silly, so I thought it would clarify their behavior when I could look into their “head”. Classical debugging a game or game server is always a pain. When everyth…
When I realized that the classes are getting really big and complicated, I splitted them into smaller classes. So the Actor class doesn't do everything anymore, but has some components that do the work instead.
A Common problem with this approach is, how do Compositors (in this case the Acto…
The game mechanics doesn't allow to use damage skills on allies and heal or protection skills on foes. This makes it necessary that the game can identify allies and foes. A simple if statement seems to be sufficient for that, but it's not. There can be many different combinations of relations be…
Unfortunately Bows and Spears already existed in ancient Greece, so I had to implement something that feels like a projectile. Projectiles are fast moving Actors heading towards a target. If they hit the target it damages the target. Like in other online RPGs a projectile can not…
Some time ago I started to port all the servers to Linux. This process is more or less finished now, it compiles fine with Clang (didn't try GCC) and it even runs without any problems. For that I also had to port DirectXMath, which is used by the game server, to Linux.
Even the cli…
I was thinking about weapons and equipment's, which all are Items. So sooner or later some item system must be implemented. All items are stored in a database table (let's name it game_items) with a name, value, the type of the item (weapon, armor, crap...), a 3D model file (which is l…
For the last two years I worked almost only on the foundation of this project, e.g. networking, how servers communicate, database back end, different network protocols. Now that this works more or less, I started to work on the gameplay.
PartyCooperation is a big thing in this game. Yo…
Collisions have been a constant source of frustration, maybe because I decided to use my own Math library, and did not just use Bullet or something. The game does not have full physics simulation, so I thought a physics engine would be overkill, and how hard can it be to write some collision che…
This is an RPG and RPGs usually have skills. In this game a character can have up to eight skills. NPCs and Players usually can equip skills from the same pool. But I'm not yet sure if this game will have a PvE part, where you fight against NPCs, or if it's just a PvP game. Anyway, NPCs can have…
The Game server doesn't scale vertically (i.e. throw better hardware at a problem) well, because it's mostly single-threaded, so it can host only a limited amount of concurrent games. The second option is to make it scale horizontally (throwing more hardware at a problem) well, so make it possib…
For some reason I thought it would be a good idea to migrate the database from MySQL to PostgreSQL. Installing PostgreSQL on Debian (in my case Debian 8 Jessie) is just one command line. I also made a simple backup script which is run by a chron job, I have a similar s…
In games you find something that take you to other maps, sometimes this is called a Portal. On the server side Portals are just scriptable objects like NPCs. The game script adds Portals like it would add an NPC:
-- Game start up function onStart() local portal = self:AddNpc("/sc…
Sorry for the weird order, this is partly chronological and partly what came out of my mind.
UII'm not really a frontend guy, give me some backend service nobody will ever look at, and I'm happy. But since RPGs usually have a rich GUI (Chat, Party, some kinds of Maps, Optio…