-
Re: I'm on the move...
At this point, I'm gonna break my own rules (because I can) and cintuple post since I feel like updating more often than when someone posts.
In order to facilitate a speedier start up, I decided to merge projects. Since the longest and most tedious parts of my project are the networking and event sides, I decided to stop reinventing the wheel. I've picked up Hyperion and am in the process of removing some of the crap that I don't like.
By doing this, it's going to help out a lot. A lot of time is dedicated to the networking aspect of the game server. "jaggrab" is implemented (saves me like a couple days of breaking code), which allows you to use a web client that streams the cache. Essentially, whether you download the client, or play over the web, you "download as you play." Not my original idea, but I was going to implement it anyway.
I will be taking my models and be integrating them into Hyperion's software. My player model, database model, and skill model (which is being revised yet again!) should be rather easy to sync with Hyperion's cycle-based Event system since it's what I had on my source.
Basically for now, Hyperion provides:
*Fully Asynchronous Input/output
*Jaggrab implementation - Native cache protocols. Client downloads cache in the background, allowing user to play sooner, rather than downloading the entire cache just to load
*Event Manager - Based on system timer, but only processes events needed, rather than processing the entire game server
*Only 30% shitware, compared to 90% in other servers
I'll be combining several features in Luminace, my private source, which include:
*Conservative Player Model - loading for players is done in requests, rather than being demand loaded. Player model is a 4 part system that is completely independent of the other parts. It is loaded in stages over time, relieving the stress on the database and effectively 1/4thing the load time for the player.
*Parallel Database System - Demand requests are inevitable, but request pooling, and batch updates when flushing player data. Players are loaded in parts, and once loaded, are locked until logged out. Players are loaded into memory, so no database interaction is performed until the character is unloaded. Unloaded players are batch saved, greatly improving performance, and reducing redundancy
*Pluggable Native Skill System - I can't delve too much due to the fact that I am scrapping the system and returning to the template, however the basics of it involve a hybrid plugin / object serialization system. Basically, I can write skills like a plugin system, but they load into native objects. Therefore, I write the skill functionality once, and each individual skill is written like a plugin. Upon start up, or request, the game server takes all the plugins and recreates the actual skill natively. I can write skills quick, easy, and best of all, live with ZERO overhead caused by normal plugin systems
That's about all the info I'm giving for now. This integration (based on my current schedule) should take me a few days, however the forum work and my business trip will cause this to take closer to a week. Once these systems are in place, I can get all the major skills working in a day.
Thanks to some generous friends, I also have sponsorship for both the dedicated server, as well as a web host! I'm separating the web host from the game server to reduce stress and to add redundancy (one DDoS attack won't down everything). If this gets off the ground soon, it'll definitely be due to our gracious sponsors (don't think you're getting anything from me, I'm a broke mofo lol), so when the time comes give them a thank you :3
Last edited by GhostSnyper; 20-07-11 at 02:44 PM.
-
Member
Re: I'm on the move...
GhostSnyper, that sounds great. Loading cache only when needed would be awesome. I should implement it myself too.