THE ROAD TO RELEASE


THE ROAD TO RELEASE

Version 0.2.1597.35719

IT'S ALL ABOUT PERFORMANCE

It's been a year of deep end tech development focusing on updates, refactoring, and performance — setting the groundwork for a better overall experience as we approach release. We changed the engine version after a year to take use of the great new Unity 2021 features. There are also significant performance increases. So we're giving our codebase some much-needed love, which means our users will notice a change.

UNITY ENGINE

At long last, we’ve upgraded to Unity 2021, bringing a raft of new tools and opportunities. Of course, in the short term, shifting engine version required a lot of fixes and tweaks, but we're already seeing payoffs, and it sets the stage for much more in future.

NEW MODULES (server-side components)

WEATHER

 In the latest patch we  introduce the weather system. It is still under heavy development and the exact release date of the module is unknown.  The weather module is working in the background. it is pulling real-world weather data and it's injecting into our new simulation scripts (more about it in the following updates). Currently is working with ATS and ETS including all DLCs. The server will generate a footprint of your map, and will try to find all available data from our master server's API.


To prevent flooding  and unnecessary API calls,  the system will capture only the first three cities closest to your trucks position.  All weather conditions will be saved for later use. For example if you visit the same city again in the future. With that, we are creating a ferly accurate simulation of the weather surrounding your truck, and apply some things to it that was not available before.

SOLSTICE, SEASONS, AND DST

Another module we were working for almost 2 months, is the Advanced Solstice Control.  What it does is simple. it transfers the real world, game time or Static seasons, suns position to the game. That means  you have more realistic lighting and feeling in your game. Also supports Daylight saving time (DST). This was  a personal external application and it is working just fine.  Now I'm thinking to integrate it into the server (If possible).  It requires only a simple *.sii file that controls the game settings. Note the *.sii file (mod file) is not created by me, and i don't know who made it (Someone just send it to me. I'll put credits to the original author on the final product). The only thing the application is doing is track the time and date and "injects" the code into the game at the next launch. Yes. next launch. The game reads the mod files only at startup.

Note if you look closely, you know the exact time and day i took the screenshot because is set to System Time (or Computer clock) :)

SERVER

If I start talking about it, I'll never stop. like I've said almost a year ago, It's a complete overhaul and built from scratch. most of the stuff is already known.  So I'll only point some key features from the development journey.

As an application it is ready to go. I mean it is finished (at least it's working most of the times). The reason I'm not releasing the server is because there is no compatible Client. In theory you can use any Client that can handle TCP/UDP connections, but that is another story.

The server now is decoupled from the client code. if you notice the first (and only release) experimental build, you will see that the server and the client is exactly the same, in terms of size. The only thing that separates them is the Operating system (OS). It's hardcoded to run as Server when it detects Windows OS or run as Client when it detects Android device. Other than that, its the exact same application. Decoupling the server from the client was the best thing i did. Ok, maybe i have 2 projects to maintain now, but its not what it looks like. Let's say I have decided to update the server for some reason, but not the client. Now you will think i have to update the client too. But that's not the case. You can still connect to the server with an older Client version or vise versa -While the core files stays intact of course-. For example... I'm adding a new field called Weather_temp, to the server. The client (an older version) will connect to the server, will pass the Authentication , but it will be impossible to read the Weather_temp field from the server because it's not yet implemented to the client. I believe this will give me some time while i'm working on future updates, and you will still be able to use the client without any problem.


Multithreads. well... Yes. I know, i know. I've said no multithreads this time. But there is no way i could make it work in single thread. The server is running (currently) in 2+1  threads. #1 and #2 are shared between server and client networking , #3  Listens for new client (TCP only).

The entire application is locked at 30 frames/sec (FPS). I believe is fast enough to read everything's happening to the SDK. The reason is simple. at 30fps the application is fast enough to read everything is going on and push the changes to the network, while the CPU (Ryzen 7 2700) usage is between 0.2% - 3% and GPU (GTX  650)usage is bellow 2%.  Although test with unlocked settings shows how powerful this tool is. Removing the FPS limit the server is running at 1200 - 1750 FPS. In short terms that means the entire application logic gets executed 1750 times per second. Cool! but it's unnecessary. The drawback is the high CPU and GPU usage.  Of course. everyone expected that one coming. 


And last but not least. Web-server.

WEB-SERVER

One word. Funbit's server. Yes. it's working just like Funbits server. That means you can still have all those web apps/skins like before, but with some modification to the code. the API is different... Not that much. For this part of the project, i'll need some help of a web developer since i was unable to make it work. It works as intended from my end, the API is there, but i had no luck with JS programing. i've failed many times to retrieve the values from the API, to the point i just gave up. I don't know what else to do.


Technically the server has three methods to deliver data from the game. TCP, UDP, and HTTP. And you could use two of them simultaneously. possible combos TCP, UDP, HTTP, TCP+HTTP, UDP+HTTP.   

FOR DEVELOPERS:                                                                                                                                    If you want to get involved with the web-server and design/develop the front end, i can zip the application and upload it somewhere. It should be around 12mb - 20mb i don't remember.

MASTER SERVER

Master server is just a server that hosts other servers (yours). To make it even simpler, your server is becoming client for Master server. Now you will say, I can track your devices, i need GDPR, and stuff like that.  The answer is no. I track nothing. It's 2 way encrypted connection with multiple ciphers and a reverse proxy. 

Nothing is a given yet. Server to Master server connection is another experiment.  I have many reasons to follow that path. For what is worth, i do search alternatives too, because this method is expensive and there is tons of things that could go wrong. Not at your end but my end. In order to have a Master server means my computer or in this case a server computer, is exposed to the internet. And someone could use that, to find a vulnerability to attack my home network. yeah nobody wants that. Especially if you have smart devices, CCTV, local servers (like backup "cloud" service), and stuff like that. If someone take control of these devices it will be catastrophic. 

CLOSING

The server (or even better... Servers) got a lot of my attention this year. The client will have the attention it needs soon. Most of the scripts will be recycled from the legacy version. That means the only thing that will need hard work is the core files which is responsible of receiving  data streams. The skins will be the same (almost). Those needs some attention too.

**********************************************

Ok you made it so far. This is an old post (almost 2 years ago) but it stayed as draft. The reason is that i have a full-time job now and i was (and still i am) unable to work with this anymore. The server changed a lot since that post (image bellow). i don't know when i'll be back to ETS since they're always extending my contract. Right now i can work with those people for 4 month more, and then i'm out. But you never know.

 

Hope to see you soon.

Get Kronos Telemetry [experimental]

Leave a comment

Log in with itch.io to leave a comment.