trill41

Profile
Austria

3D Fantasy Online RPG located in ancient Greece.

6 comments
2 followers
21 entries
Advertisement
trill41
March 21, 2021
Animations

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 …

13,306 views
trill41
November 21, 2020
Multiple height levels

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…

3,847 views
trill41
November 03, 2020
New navigation mesh

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…

2,964 views
trill41
April 04, 2020
Autonomous movements

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…

17,230 views
trill41
February 18, 2020
Debugging Game AI

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…

5,468 views
trill41
January 01, 2020
Linux and Open Source
Linux

The Client runs now as smooth as on Windows, thanks to Urho3D, which seems to compile and run almost everywhere.


Open Source

While the source was on GitHub for some time now, it was not really possible to run your own server, because assets, documentation and some more things were missing. Now e…

2,014 views
trill41
August 24, 2019
Event system

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…

2,778 views
trill41
August 07, 2019
Friend Foe identification

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…

4,637 views
trill41
July 28, 2019
Projectiles
Projectiles

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…

2,835 views
trill41
June 18, 2019
Running on real Server Hardware

Some days ago I got old server hardware. It's a Xeon with 4 cores @ 2.40GHz with 8GB RAM an SSD and 2 HDDs in RAID1.

I installed Debian 10 Buster with Xen to run it as a Bare Metal Hypervisor, just like a real server. To install and deal with Xen - I never used it before, and I'm developer n…

2,808 views
trill41
June 01, 2019
Linux and Client prediction
Linux

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…

3,052 views
trill41
April 21, 2019
Items and AI
Items

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…

2,910 views
trill41
April 02, 2019
Gameplay

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.

Party

Cooperation is a big thing in this game. You…

2,015 views
trill41
January 29, 2019
Collisions

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…

2,346 views
trill41
November 25, 2018
Skills

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…

2,156 views
trill41
November 02, 2018
Scaling and Administration

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…

2,221 views
trill41
October 02, 2018
Migrating and Porting
Migrating the Database

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…

1,993 views
trill41
September 15, 2018
Part 4: Portals and UI changes
Portals

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…
2,395 views
trill41
August 31, 2018
Part 3: UI and Network
Preface

Sorry for the weird order, this is partly chronological and partly what came out of my mind.

UI

I'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, Option…

2,531 views
trill41
August 28, 2018
Part 2: Players, NPCs and Navigation
Player

Replaced the ball with a real character model. At the moment I have just a few character models with two animations (run and idle): Video

The character was made with MakeHuman and the animations are from Mixamo. The workflow is straight forward and (more or less) painless:

  • In…
  • 3,533 views
    trill41
    August 28, 2018
    Introduction

    A game server written in C++ from scratch. The game client uses Urho3D.

    Current Features
    • Uses a single TCP stream for the game protocol. This is not a shooter or action game, more like a classical online RPG.
    • Database back-end is currently MySQL (PostgresSQL and ODBC is also imple…
    3,683 views
    Advertisement

    Popular Blogs

    shawnhar
    Generalist
    101 Entries
    9 Followers
    15 Entries
    10 Followers
    johnhattan
    Programmer
    1,277 Entries
    47 Followers
    ApochPiQ
    Generalist
    628 Entries
    44 Followers
    dgreen02
    Generalist
    338 Entries
    56 Followers
    Advertisement