Upgrading to a newer version of the engine

I decided to try upgrading Ymir to a newer version of the engine i use, Game maker.
This will take some time, as it causes numerous problems due to the changes made to the engine.

Bad :
– I lose all the extensions i used : they’re now either obsolete or incompatible.
– No more multithreading… It was one of the main reasons i didnt upgrade before, as this experimental dll was abandonned and doesn’t work in more recent versions.
– It will take an unknown amount of work to fix all the issues due to the upgrade. likely weeks.

Good :
– The engine is way more optimized, however i can only measure the difference when all the work is done… will it compensate the loss of multi threading ?
– Allows a potential multiplatform release
– The code is more secured
– But most of all, this new version has some built in functions to support steam integration, which is something i’ll definitely need.

What’s been done in the last few months (v0.600)

So after a few months the – internal – version 0.600 is complete, with the new networking system operationnal and the old code mostly updated, at last! In the last few weeks, i’ve started building new features again.

Also, i started the implementation of Server-side region pathfinding. What does it mean ? It means the server is now getting ” eyes ” , beeing able to see a region. It’s first aplication is to allow the server to place buildings properly by itself, especially the automatic spawning of slum houses for extra populations ( in the last test game it, the messy temporary solution created exploits that are now fixed ).
Region's pathgridHere on the screen you can see a debug view of one pathgrid of a region. This is what the server ‘sees’. Here its showing invalid zones in purple (buildings and cliffs) and free spaces where to place a building in green.

Later on, this will allow buildings, walls and terrain to have an effect on battles ( currently they’re all ignored, and its as if armies were fighting in empty plains ).
The next step on that matter is to implement server-side WORLDMAP pathfinding. It will allow automatic movement of troops ( armies coming back to home after a mission or an attack, AI controlled barbarians moving around and attacking players etc.. )

 

Also here is a screen of the diplomatic menu.

diplomatic menu

Its composed of a text editor and an optional treaty proposal. Treaty options will in the end include things like right of passage, payment of tributes and taxes, setting up manual trade routes, allowing trade with cities ( the ability of a player to take trading offers from the regions of the other player ), transfering territories, becoming allied and vassals etc…
Also as you can see on each side of the treaty, there is ‘breaking closes’ specific to the 2 members of the treaty.  These will apply to the relevant member that breaks the treaty, and it includes 3 options: a gold penalty (some sort of security deposit) sent to the other member, the automatic declaration of war by the other member and an honor penalty. Honor will be a non gameplay stat only used used to inform other players of your reputation.
Signing a treaty with a high honor engagment basically means you ” swear to god i’ll respect it ” while a low one will mean more something like ” lets see how this agreement goes and it will last as long as i’m in the mood”.
This assymetrical system will allow a player negociating peace with a defeated oponent to force him to accept vassality and tributes , binding him with lots of penalties while having none on his side to remaining free to do as he wish.

Treaties will also cost some administration points, depending on the nature and amount of terms they contain.
They will also include a possible limited duration after which they become obsolete without triggering any breaking close.

 


v0.600 changelog

Engine
– Global networking upgrade & reorganisation to standardize and optimize data transfers and database management.
– Data subscription system to maintain data automatically synced with server
– New pathfinding system and coordinates to optimize framerate and allow later support of terrain elevation and walls.
– Multi threaded pathfinding system to optimize framerate
– Cleaned up login process
– Implemented Server side region pathfinding, allowing the server to place buildings in regions automatically.

Gameplay
– Events system
– Early diplomatic and contact menu

UI
– New text editor

Audio
– Added dynamic music player and transitions
– Fixed bug in ambiant city sounds
– Added building sound effects

Graphism
– Added oldpigs and piglet citizens.
– Now 2 visual levels of citizens ( total of 4×2 citizens )
– Added building animations

Debug
– Solved crashs when loading region.
– Solved workers not properly leaving a bulding set to sleep
– Solved bug where population could be duplicated when destroying slums
– Solved bug where slums would fail spawning

About time to give some news!

Lots of things have been going on in the last months, though most of it remains invisible, and i havnt much eye candy to show.

First, i completed the 3rd big update on the networking engine of Ymir.
This is a verylong task and although invisible , its critical for the game development. This new system is now complete, but now i need to review and update the whole code to use it instead of the old one, which will also take ages.
This new level 3 network provides big improvements :
– More stable
– Centralizing all networking operations in only a few functions, making debugging and maintenance easier as well as implementing new features
– Improved bandwidth usage with optimized and compressed data transfers
– A data subscription and patch system allows to stay updated on a piece of data without having to redownload it all. This will limit bandwidth usage further more and improve loading tiems. What it means is that for exemple you wont have to re-download the whole building list of your city every time you go back to the worldmap, because your game will stay synced with the server even when you leave the region. This auto update system beeing centralized , it works for all the types of data, replacing a case-by-case basis system where each data had its own set of functions.

Secondly, though its still WIP , i have started implementing the events system, mailing system , treaties and trade routes.
Treaties include many options like trade agreements, tributes, right of passage, alliances… They also include automatic breaking closes that can be specified when creating the treaty : for instance, making one of the players pay a gold penalty in case he breaks the treaty, or triggering war automatically. Treaties are proposed via the mailing system, and become effective once agreed by the 2 players.
Screenshots of the UI will come when i’m done repairing the game by updating it to the level 3 network.
Setting up this whole new set of features is also a big task, and because they’re all related with each other, they can’t be done one by one. There is still a lot of work to be done before its ready.

And last but not least, i am aware that at this current workrate, this game won’t be finised until 2030… Though its too soon to say anything right now, i’m now seriously planning to change this situation and considering my options. If it does happen, the game should be playable within a year after it becomes effective.

Video presentation of Ymir!

Check out this video presentation of Ymir and share it to promote this game if you liked it.
After 2 years of quiet development, now has come the time to wake the Pig Leader that lies within each one of us, and to advertise this as much as possible to gather everyone who might be interested in this game!
OBEY XENU. XENU SAYS SHARE OR DIE!

Its been a while and here a few news since the alpha 1 game closed !
Since the test game ended, i’ve been working a lot based on the different feedbacks i got. I solved most of the loading bugs and worked on a lot of different optimisations. Therefore the loading times of have been improved substantially.
I’m now in the middle of an important code work about the isometric coordinates system and the path finding. It allows terrain ( and later on , walls+ buildings ) to be considered by units and it also improved frame rate ingame.