HKS 27D Posted February 1 Posted February 1 Time tracking CS2 Anul trecut am fost in cautare de sisteme de time tracking de calitate pentru CS2 pana cand am ajuns sa dezvoltam propriul sistem din cauza limitarilor intalnite la solutiile comune adoptate de alte comunitati. Solutiile third-party sunt caracterizate de: performanta slaba, tipuri de date nepotrivite pentru database si lipsa statistici zilnice pentru fiecare jucatori. Platformele online precum GameTracker au fost de asemenea scoase din ecuatie din cauza tracking-ului inexact si din cauza faptului ca se bazeaza pe numele de pe Steam (case-sensitive). Proiectul FAIRSIDE Activity este scris in format multi-language: C# pentru servere si Go pentru offload task-uri care necesita intensive computing power (precum aplicatia de discord, automatizari externe etc.). Asta inseamna ca serverele de CS2 au parte de performanta maxima deoarece nu fac nimic altceva in afara de tracking one-time pentru fiecare jucator. Pluginul de CS2 scris in C# nu are timere, alocari inutile de memorie, operatii backend useless, reflection sau apeluri pe game-events resource-hungry. Implementare SQL database Am reusit sa configuram bazele de date pentru activitatea jucatorilor intr-un format incredibil de bun. Am ales tipurile de date potrivite, fara overflow sau underflow si fara oversize exagerat. Reusim astfel sa mentinem dimensiunea bazei de date la un stadiu redus. De asemenea, putem stoca continuu informatii timp de zeci/sute de ani, depasind lejer anul 2038 si problemele aferente despre care am vorbit in alte contexte. 14 bytes per row la tabelul cu timpul zilnic 20-147 bytes per row la tabelul cu timpul total Liniile din tabelul cu timpul total pot fi mai mari deoarece exista mai multe campuri si numele de pe Steam e variabil. Utilizam PRIMARY KEYS (single and composite), FOREIGN KEYS si INDEX doar acolo unde este cazul. Pe langa asta, am aplicat optimizari interne pentru a obtine o performanta excelenta overall. Rezultatele obtinute pe baza benchmark-urilor ne-au intrecut toate asteptarile. Timpurile pentru CREATE, READ, UPDATE si DELETE sunt uimitoare comparativ cu orice alta solutie third-party testata pana acum, desi stocam timpul zilnic pentru fiecare jucator. La migrarea pe noul sistem de time tracking a fost nevoie sa convertim informatiile jucatorilor din vechea baza de date pentru a le salva in noul format. Cum am procedat? Am scris in Go propria aplicatie de conversie a tipurilor de date SQL. Asta ne-a oferit control granular, reusind sa respectam complet exigentele comunitatii. In final, am dezactivat complet toate solutiile third-party pentru time tracking, punand toate serverele de fairside din 2024 pe solutia dezvoltata de FAIRSIDE.RO. Mai multe informatii tehnice There is a one-time call at CS2 server startup to purge data older than x days Optimized for long-term storage and MySQL performance, exceeding all tested third-party solutions in CRUD benchmarks Database compatibility could be narrowed down to SQLite only, if you had this requirement, although it's not recommended since you need the data for web-based dashboards, discord output or other integrations Cum poate fi folosit proiectul To check admins activity To check overall statistics of any player To check the overall statistics of the server for the last months To check players activity before giving out admin access To develop CS2 plugins based on current session or total time spent on the server To develop discord bots, web panels and other types of software Many more use cases could be taken advantage of, as we already have the data in a well-suited format Cum migrati datele catre acest sistem? O aplicatie custom a fost scrisa in Go cu error handling adecvat pentru a converti date in noul format SQL, asigurand integritate completa. In prezent software-ul de conversie suporta K4-System, dar pot fi adaugate si alte sisteme de ranking la cerere. Unealta de migrare ruleaza pe hardware AMD64 sau ARM64. Asta acopera: common Linux distros on x64 or ARM64 Windows 10, 11 (AMD64 and Qualcomm ARM64) MacOS (Intel and Apple Silicon ARM64 series) Cum puteti manipula datele stocate? In-game, by using our C#-powered plugin On Discord, by using our Go-powered app PLANNED: In the browser, by using a web-based dashboard for statistics Anywhere you want to, with custom-made integration based on the database communication Recommendation: for CS2 servers integration we would highly suggest using our C# plugins specifically designed for high-performance scenarios; consume less Internet bandwidth, computing power and RAM compared to any other solution tested up to this point, all while delivering the same results Imbunatatiri viitoare In prezent ne gandim sa construim un dashboard web-based pentru a imbunatati modul in care puteti manipula datele printr-o interfata grafica, avand in vedere faptul ca unii owneri de servere au cerut asta. Totusi, din moment ce utilizam aplicatia noastra scrisa in Go pentru discord output => acest aspect nu e tratat cu prioritate inalta. Deja avem acces usor la datele stocate pentru a obtine ceea ce dorim. Screenshots
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now