Thanks
Time will come also for for visual stuff inside the game. For now there’s a lot more important things to fix/improve. And I need to learn a little bit about blender I’m totally green in 3D graphics.
Also curious if something like this is playable on mobile?
Not yet. If I’ll decide to continue this project I will also add support for mobile.
I have completed basic form of item upgrade system. Items can be upgraded using jewels:
Jewel of quality (upgrading from 0 to +6, 100% chance)
Jewel of perfection (upgrading from +0 to +9, 75% chance)
Items can be upgraded in the inventory or equipment. All changes of the statistics are updated automatically. Dropped items have upgrade option in the name label. Allowed for upgrade are armors and weapons
Upgrading items changes:
weapon attack and attack/defense bonus for weapons and shields
defense for armors
items price
Additional:
Aside working on items I added quest progress tracker and authorization by cookie (previously token in the session storage) and there’s a possibility to pick name for the character. And fixed/made some minor bugs and improvements.
Hey Adventurers! Death arrived into realm of Maiu… All other prerequisites (possibility to regenerate hp, reasonable strong monsters etc.) were done so it was time when death finally makes sense. Before that I added neutral zone in the spawn place in order to not die instantly if some monsters comes by.
After tests with friends I also disabled pvp because it was annoying when can attack attack and kill player by mistake. I will come back to it after some time.
One lonely npc doesn’t have health component which makes it immune for damage.
I took idea from @oriongu and used black&white post processor to display death screen.
On the server side for the players commands I added notion of isAllowedByDeadEntity (disabled by default) and I’m filtering all incoming commands against entity state.
The one thing I struggled was teleporting player to the spawn place. Update of position is straightforward but I had one not covered case in the player movement prediction algorithm which effectively was blocking updating position until clicking some movement control in the client. At the beginning I tried to fix it with some hack but I failed and finally i found the problematic place and simple if with two line of code fix the problem.
Still missing some validation on the UI but I’ll add it after bigger refactor which I’m planning to do.
What’s next?
I’m working on rewriting AI system and I want to fix some issues which makes monsters group in corners of the map.
I want them to always stay in own area not matter how long server is running.
Next I will try to fix issue with client side prediction. Sometimes there’s a small jump back of player after stopping player movement.
And i want to finish vat animations for monsters.
@oriongu Thanks
For ‘early’ demo at least what I need is to fix AI. I started working on it and right now it’s in worse shape than before. Dead monsters (sometime invisible ones) are hitting player etc…
I already did some preparation for releasing. And I hope really soon I’ll share a link to aws instance with early demo to play with
hi Finally I fixed AI. I spent a lot of time figuring it out, started from investigating AI logic, then found discrepancy in the data, then was able to randomly replicate issue. Was trying to find root cause on the debugger playing with the data in multiple threads, added a lot of additional logging. Even I was analising whole log entry since server start to the moment when issue happens and…
It turned out it wasn’t problem of the AI, logic was ok but in some cases it has outdated data. I had issue in the game loop → AI module replication. Fix is done so this is promised early demo:
It sits on free tier so there’s only 10% cpu provided. But it should handle 3-4 players until reaching 10%. Over that there’s some credit balance to be used So I think for now it’ll be sufficient.
Still there’re some issues but i think it’s playable. I think the most annoying is small pushback of character after stopping movement, it’s related to the client side prediction. I wanted to solve it but I after second thought i decided to not I will remove this mechanism for good and I’ll handle player movement in a a little bit different manner. I’ll simplify few things this way
What You can do in the demo?
Take some quests, kill monsters, buy/sell from the vendor. Gear up and upgrade items with jewels (it’s required to kill stronger monsters). And… @oriongu Now You can try to break sth
I had a quick try, and did not manage to break anything specific.
Combat was not obvious to me at the start but once i understood you first select a spell then right click, it was better.
I got destroyed multiple times by the boss
The stuttering movement truly makes it hard to enjoy for the moment.
Everything else is rather responsive.
AI can be tricked into being blocked behind a rock
It’s nice having multiple classes and some of the abilities are quite cool, like the one that trows a poison bomb and does an arc before hitting the ground.
Combat was not obvious to me at the start but once i understood you first select a spell then right click, it was better.
For now I tried describe most important stuff in the help window. I’m planning redesign UI and I hope it will be much more intuitive.
I got destroyed multiple times by the boss
Yes it’s quite strong requires some nice gear (upgraded rare or epic) and +100 defense
The stuttering movement truly makes it hard to enjoy for the moment.
I’ll work on it. In previous message I wrote that I know how to make it better but right now I’m not sure. Must think about it to not degradate responsiveness
AI can be tricked into being blocked behind a rock
Yep, Dont have pathfinding algorithm yet and no line of sight yet. Already have plan how to make it work and it’s already added to my todo list.
It’s nice having multiple classes and some of the abilities are quite cool, like the one that trows a poison bomb and does an arc before hitting the ground.
Thanks a lot @oriongu ! I really appreciate testing and the feedback
Hey!
This time no updates related to the game itself but I bought domain for my demo and a new hosting.
I changed config for prod and right now there’re 3 predefined characters with bunch of random items in inventory and 10k dust. I’ll keep it until I’ll have some db because for now everything is in memory and it’s lost after server restart. It should easier to test stuff.
The stuttering movement truly makes it hard to enjoy for the moment.
@oriongu Finally I think I have some solution for this issue. I was thinking how to solve it for some time and turned out lag compensation on the server side was the missing piece of puzzle.
I’ll will really appreciate testing and feedback. In low latency ranges looks great but it’s not tested enough and bugs are very plausible. Perhaps client side prediction needs some adjustments.
About implementation:
It was quite simple. What I needed was circular buffer for position and rewind loop for older commands than current tick (client clock is synchronized in a way that when client is sending command at eg 1000 tick, server should receive it at 1000 tick - clients are ahead of server by latency / 2). For now I set hard coded 0.5s threshold for rewinding position but in future I’ll use player latency + eg 3-4 ticks to mitigate clock synchronization error and a small latency fluctuation.
To make it work properly I needed to add one small hack on client side which is sending stop commands with future tick (+1) because client is already predicting movement for current tick and if I’d stop at current tick it creates small pushback each time (speed / 20 ticks => 0-0.35 unit range).
I my current movement system players sends commands which direction to move and when to stop. I’m considering switching movement design just to send new position from client and validate it on server side. In such case I’ll need extrapolation on the server side to match combat type of the game (combat heavily uses projectiles, I cannot depend on smoothing entity movements only in the clients, because small lag from any player will mean that client lies about real entity position, even with lag compensation which will catch up to proper position).
Might sounds complicated but It should simplify many things on client side eg. client side prediction will be not needed. One unknown for me is how it will change client side reconciliation, I need to think it through.
Hello Adventurers,
Long time no see! Recently I was spending less time on the project and I was focused on server side stuff. I refactored a lot of code and also did few improvements.
Finally I did change that can be shared. I added quest status mark on npc to indicate if are there any quests to take or finish.
Aside this, server refactoring and small improvements these are the things that changed since last update:
in file db will keep data between server restarts
new event bases spatial system (previous one was calculating subscriptions changes periodically each 1s), this change should bring more responsiveness to the game eg. picked up item will disappear faster than before
small optimization in server side network publisher will reduce latency a little bit.
introduced delay to ecs entity ids recycling mechanism to avoid potential bugs.
some initial work to prepare game server to be able to spin up more zones in one simulation (for arenas/dungeons etc)
nicer snow flakes effect for magic arrow spell (Wizard)
Also i was trying to rework movement and combat system but I failed. Idea was bad and I decided for now to postpone work. In future I’d like to return to this.
Thanks! I really appreciate it
I’m not planning to abandon this project in near future. I have a lot of ideas what I’d like to add/improve, so… slowly in good direction
Currently I’m handling technical debt so it will take a while until sth visible to the player will appear. But I hope it will pay off in near future.
Right now I’m continuing work on engine to be able to handle multiple zones, this will give me way of working and testing of different stuff without breaking what i have currently.
Short update.
Sometimes I’m adding small things which I’m not sharing or some changes in the mechanics. To keep history of them and keep interested people (hope there’re any ) up to date and inform that project is constantly developing I added change log list (for now I’ll display last 5 entries) on login screen.
Hello Adventurers, New GUI has arrived!
Recently was working on client side refactoring and at some point I just tried to make one gui element looks better and it turned out into rewriting the whole UI (it was planned but no at this point)
Anyway regarding my super low UI skills I think it’s looks awesome. Someone might dont like it but it’s exceeding my skills dramatically
Also there are few thing that changed since last update:
added critical and excellent dmg rate (right now hardcoded value)
minimap placeholder on the top right corner
removed free character stats for spending
new hp bars and entity names
new type of entity in the engine - interactive item - POC (Mystery chest in the game)
Recently I discovered that i can use different textures for particle systems (I really didnt know about it ) and then learned a little bit of gimp and like a little baby tried to use it everywhere. This way improved some abilities effects for archer and wizard and also lvl up and q complete effect. Effects are quite nice - for sure better than before. This is example of Snow Ball spell: