Halomods Community Portal: [WIP] HaloRank - Halomods Community Portal

Jump to content

  • 2 Pages +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

H1_CE
[WIP] HaloRank

Project by SeanAero, attempting a solid stats tracking system for Halo

#1 User is offline   SeanAero 

  • Halo President
  • PipPipPip
  • Group: Members
  • Joined: 24-May 11
  • LocationNetherlands

Posted 01 June 2011 - 02:22 PM

Hello Halo fans!

As most of you know (or don't) I'm currently working on a website called HaloRank which is progressing quite well in the last month.
So some of you are probably wondering what is HaloRank?

HaloRank is a website which keeps track of your HaloPC and HaloCE multi-player statistics. While at the same time providing additional fun, through achievements, challenges and best of all ranks!

How does it work?
Basically it uses a modified server application which tracks your score and send it to the HaloRank database. The database processes all the scores submitted and turn the scores into interesting and "usefull" stuff.

Another Server application, it must be buggy and crap?
Not at all, it's stable and performs very well up till now, no crashes.
This is based on an 8 month run time/on a server with an average of 11 player on at all times throughout the month. More detail on this server app will follow around release date.

So how fast is this tracking mechanism?
Currently scores are processed within 2 minutes after a game ends, however overtime this process time will go down quite a lot and hopefully become nearly instant.

I'm a pirate or "HaloCE portable" (v1.00/v1.06) user, will my score be tracked?
Your score will be tracked but since this system is based on hash it will be quite hard to keep tracking your progress over time.
If you want to be tracked perfectly within in the system you'll need a legit install of Halo and a legit key. Measurements have been installed to filter out pirates hashes over time, however it can never be 100% perfect. This does not mean you can not play as a pirate, it just means I can't guarantee to accurately update your score over time.

I took a look at your website at HaloRank.com and it looks noobish.
My CSS skills are quite poor, design isn't really my thing, although I slowly try to master it. I usually have the right ideas just not the right skills to produce a high quality eye catcher. The current layout was basically a test case with CSS to see how it works. Behind the screens a new design is in the making which will be updated on the day of release. Here is a little tease that hopefully tickles your fancy:


What happens if I register on your website right now?
You will basically become a test dummy. Your account information will be deleted upon release. Just before you ask, Yes, I can assure you your passwords are encrypted and safe from anyone to read. Even I don't know your password.

So when do you release?
People usually say when it's done, however I aim to be done on the 1st of July with an introduction to the public through HCE3 on July 8th.
So a lot of fun ahead this summer.

That's all for now, leave your comments, thoughts and suggestions below.

Cheers,
Sean Aero


For those really interested in seeing a small fraction of the concept work can do the following:
Spoiler

This post has been edited by SeanAero: 03 June 2011 - 12:18 AM


#2 User is offline   TCK 

  • Script, AI, UI widgets, cutscenes, solo gameplay.
  • PipPipPip
  • Group: Members
  • Joined: 05-May 11
  • LocationSC

Posted 02 June 2011 - 08:21 PM

Saw this on Halomaps, looks like a good idea, I'd probably really enjoy it if I played multiplayer xP

#3 User is offline   SeanAero 

  • Halo President
  • PipPipPip
  • Group: Members
  • Joined: 24-May 11
  • LocationNetherlands

Posted 03 June 2011 - 12:11 AM

As your probably aware it's not a completely original idea, however I do intend to give it it's own twist.
What keeps you from playing multiplayer?

#4 User is offline   TCK 

  • Script, AI, UI widgets, cutscenes, solo gameplay.
  • PipPipPip
  • Group: Members
  • Joined: 05-May 11
  • LocationSC

Posted 03 June 2011 - 12:30 AM

Nothing really keeps me from it, I just don't like it much.

#5 User is offline   BrainOfTheSoul 

  • Newbie
  • Pip
  • Group: Members
  • Joined: 03-June 11

Posted 03 June 2011 - 12:45 AM

I may have to try this soon.. Looks pretty sweet, I can't wait to be able to use it to track my classes stats as we game Halo after our work is done in class :)

#6 User is offline   SeanAero 

  • Halo President
  • PipPipPip
  • Group: Members
  • Joined: 24-May 11
  • LocationNetherlands

Posted 03 June 2011 - 01:00 AM

Go ahead give it a go, just be warned that the sweet stuff is being kept behind closed doors, at least until July.
I'll post updates in between, especially when I got some more server tracking.
If there is something in particular you desire to see, just post them here and I'll see what I can do. :kic:

#7 User is offline   Wholfe 

  • Advanced Member
  • PipPipPip
  • Group: Members
  • Joined: 17-May 11

Posted 03 June 2011 - 01:07 PM

i never play online anymore either tbh... no moar tricking servers = no moar fun for me. sounds pretty neat though :P

#8 User is offline   SeanAero 

  • Halo President
  • PipPipPip
  • Group: Members
  • Joined: 24-May 11
  • LocationNetherlands

Posted 03 June 2011 - 02:43 PM

Thanks for the reactions so far :D

Yesterday I managed to script the "fun" rank system similar to that of Reach on the Xbox360.
Credits/Experience points are awarded at the end of a game. The better your performance in that game the more experience/credits gained.
The more credits/experience you have the higher your rank.
This still needs to be balanced in order to have a descent and fair ranking + experience.

Also I updated the old main page to display a bit more data for now.
So the user has a bit better understanding what direction I'm heading and how far along the functionality is.
As always don't look at the design :rolleyes:


Since I don't want to force anyone to sign up I'll share an image of a game summary.

Note: The grayed out player is someone that left.
As you can see most of the basic game data is there and as I mentioned/teased in my first post there is an update on the way and so far I'm liking it.
I'm sure you will too!
The game summary is updated around 5 times each minute! (fixed this yesterday)
Meaning you can basically follow the game through the website without joining. Should be a nice feature for competitions/leagues/tournaments and such.

In other news, for those playing on HaloCE V1.09 a new server has been added to the tracking system.
Server Name: ® Smallworld 24/7 - RealworldCE.com
Server IP: 95.211.79.98:2304
Big thanks to Dwight and Harbinger from RealworldCE.com to support me during this project with their servers.

That's it for now I hope this provides a bit more understanding on what I'm working on.

#9 User is offline   Xerax 

  • Double Faggot
  • PipPipPip
  • Group: Members
  • Joined: 07-May 11
  • LocationLondon, UK

Posted 03 June 2011 - 06:30 PM

If you want a person todo the design, im sure i can give you a hand.

#10 User is offline   SeanAero 

  • Halo President
  • PipPipPip
  • Group: Members
  • Joined: 24-May 11
  • LocationNetherlands

Posted 03 June 2011 - 07:20 PM

View PostXerax, on 03 June 2011 - 06:30 PM, said:

If you want a person todo the design, im sure i can give you a hand.


That would be great! Do you have Xfire or AIM so we can discuss the details?

#11 User is offline   Xerax 

  • Double Faggot
  • PipPipPip
  • Group: Members
  • Joined: 07-May 11
  • LocationLondon, UK

Posted 03 June 2011 - 07:47 PM

View PostSeanAero, on 03 June 2011 - 07:20 PM, said:

That would be great! Do you have Xfire or AIM so we can discuss the details?

yee, AIM: caiimeaiexx

#12 User is offline   Wholfe 

  • Advanced Member
  • PipPipPip
  • Group: Members
  • Joined: 17-May 11

Posted 03 June 2011 - 09:30 PM

mmmmmm, just experiment with xp totals per game and what not and create the ranks accordingly. with a nifty attractive site design, this would be vury spiffy to have.

#13 User is offline   SeanAero 

  • Halo President
  • PipPipPip
  • Group: Members
  • Joined: 24-May 11
  • LocationNetherlands

Posted 04 June 2011 - 11:22 PM

I'm happy you see its potential Posted Image

#14 User is offline   Wholfe 

  • Advanced Member
  • PipPipPip
  • Group: Members
  • Joined: 17-May 11

Posted 04 June 2011 - 11:27 PM

:D

#15 User is offline   SeanAero 

  • Halo President
  • PipPipPip
  • Group: Members
  • Joined: 24-May 11
  • LocationNetherlands

Posted 05 July 2011 - 09:45 AM

Just because it's quiet doesn't mean it's dead!
Here is a sneak peak of what has been in the works. Took the CSS on.
For now I'm taking a day off, heading to the beach. Been coding too much in the last few days, but with every line of code the system becomes more amazing!





This post has been edited by SeanAero: 05 July 2011 - 09:47 AM


#16 User is offline   SeanAero 

  • Halo President
  • PipPipPip
  • Group: Members
  • Joined: 24-May 11
  • LocationNetherlands

Posted 11 August 2011 - 06:40 PM

As of this morning a new system has been installed on HaloRank.
This system allows HaloRank to do 2 things.
This first is linking any legit hash key to a registered account with 99.9% accuracy, it's easier, faster and nearly error free.
The second is excluding pirate hashes to be used to sign up at HaloRank.
This might seem a bit harsh, however there is no other way to keep this system as legal and accurate as possible.

So are pirates completely doomed?
No not completely, we will offer a solution soon.
Starting somewhere next week HaloRank will start selling CD-keys fresh out of a sealed box for a reasonable price.
HaloRank hopes that all the additional features that it will offer will even pursue the oldest pirates to buy a legit key.
So there is a way out for a fairly reasonable price. More details on this later.

So back to the freshly installed system.
Unfortunate with the installation of this system HaloRank was forced to unlink all current accounts from their hash.
This to verify all current linked hashes to see if some sneaky pirates made it into the system.
(We know your out there! ARGGG, Matey!)
Meaning that the system currently does not know what hash belongs to your accounts and thus is not able to track you.

In order to resolve this problem we would like to request you to do the following 2 step process.
1. Sign in to your HaloRank account at www.HaloRank.com
2. Join one of the servers listed in this email, no more than a 60 seconds join is required to complete this process.

Once you've completed these 2 steps your good to go and rank up until your heart is content.
Perhaps try some daily or even a weekly challenge for some additional cR bonus? (http://www.halorank.com/challenges.php)
That is if your not a pirate, since you'll be walking the plank!

As of yesterday the WIP password has been removed and HaloRank can be joined by any halo player.
So feel free to share the website with your Halo friends, forums and news feeds and see what they think about the progress so far.

Still a lot of work that needs to be done, to get the website where I want it to be.
The more interesting features probably pop-up somewhere at the end of September when a larger portion of the community has signed up and my partner in crime has his website up and running again.

#17 User is offline   SeanAero 

  • Halo President
  • PipPipPip
  • Group: Members
  • Joined: 24-May 11
  • LocationNetherlands

Posted 23 November 2011 - 10:09 PM

I have some questions at the bottom of my post so if your not interested in reading the rest, I would appreciate if you could share your thoughts on the questions at least!

It's been a while since I've posted anything about this.
So let me explain what's been going on.
I released a WIP version of the website to give people a feel for the system and get initial feedback.
It had a quite a good start, with 320 accounts created 160 accounts had their legit cd key linked to their HaloRank account, so 50% was linked (which I think is a good percentage).

Beginning of October, Gandanur released version v11.9.0 which includes sending statistics to HaloRank.com.
From there on out I started handing out server keys to server admins that wanted their stats tracked.
The total amount of server being tracked grew from 10 to a total of 68!

That's when things started going wrong with nearly 2000 rows of raw untouched data being added every 5 minutes and a total 4 million rows processed the system started to show signs of being overloaded.
Too much data was being processed in a very inefficient way and the server load was pushing 4.00!! (quad core)
Fortunate for me I have a kind host who hasn't kicked me out yet!

After some research the conclusion could be drawn that I did not take scalability into account.
The database was poorly structured and the SQLs I wrote for the cron jobs were far from optimized (slow queries).
Certain queries took 66 seconds!!
As you can tell by now, I failed pretty hard.

I was forced to stop all cron jobs which basically means the system is currently dead.
Now I have two options here:
  • Take the easy way out, abandon the project like many have before me.
  • Completely re-write table structures and all cron jobs.
I'm not a quitter and I feel that the Halo community is really missing a place where the playing community comes together, so I will not give up and have continued production.
With graduation kept in mind I set a deadline for release on 12/1/12 (12th of January 2012, ~49 days from now), you might say this is bold and too soon, however after this I do not want to spend any time on side projects.

So what have I learned in the mean time?
Well remember that SQL I mentioned earlier that took 66 seconds?
I started reading into sub-queries and MySQL databases.
I now have a better understanding on how a database selects its rows and columns, why keys are important, why I should think about the length of the data in each column and why all my tables should be set to use InnoDB.
This might be basic knowledge to you, but for me as someone that just codes for fun this was a huge thing.
It completely changed the way I build the database and how I write SQL.
With this new knowledge I re-wrote that 66 seconds SQL to select the same data but now only takes about 0.03 seconds!
So can I fix the system?
I'm 100% certain I can!
For now the website has been turned in too a large countdown timer, to pressure me on moving forward and for the occasional visitor to see how progress is going and how much time remains.

What else has changed in the mean time?
Well basically I'm running an unreleased version of Gandanur that sends even more statistics!
This might sound kinda crazy for a system that just barely died but this extra data was the final values that I wanted to track.
I would not be happy with this project if this was not included.

So what's this new data? I don't want to spoil all the features since promising things is kinda dangerous, however I will reveal one part since I have some questions about this to you the community.
This new version include a few standard medals, think of double kills, triple kills all the way up to killionaire!
Same goes for killingsprees(5x), running riots(10x), all the way up to unfrigginbelievable (40x).
I'm sycked, hopefully you are too!

Anything else?
Nothing that I would like to mention at this point.

Now after reading all this I have some questions to you guys.

First question:
Today I tested achieving some of the multikill and spree medals and noticed I was able to achieve 90% of the medals in a single shield sniper game!!
Which made me realize that this spoils the whole fun of the system, all medals unlocked in a single game. No challenge.
So my question to you is how would you solve this problem to keep it even interesting to the better players? (note: I was on a noob server, not boasting about skills here)
(Adding more medals is not an option, do note I track all gametype settings)

Second question:
Is related to the fact that anyone can leave, join, re-join and even team switch in a game.
My question to you, how would you score players that re-join or team switch during a single game and have their scores reset?
What about those that leave games early or join late?
Keep in mind that that I track win/lose/draw and that there is a level system similar to that seen in Halo Reach in place that credits players for their performance and their time played in a game (cR system).

Third question:
What does all-time/career total kills mean to you?
Does it mean all kills no matter the gametype settings or maps are summed or do only 100% shield and 100% health settings on default maps count?

Fourth and Final question:
Halo PC vs Halo CE?
Two different games or one and the same?
What should I do with the stats merge them or keep them separate?

I'm looking forward to your reply, since I'm not quite sure what to do here.
Thanks

#18 User is offline   kornman00 

  • SourceGuy 2.0
  • View blog
  • Group: Administrators
  • Joined: 15-November 01


Users Awards

Posted 24 November 2011 - 09:19 AM

1. The way Synapse was going to work was by providing server admins with their own unique authentication key that would be used when submitting legit stats (ie, stats not related to just joking around; customs). That key could then be black listed if abuse was detected. Synapse could judge game types for extraordinary settings. A game type, or server, set to have inf ammo or other irregular settings would be disqualified for submission to what would have essentially been Cerebrum's "Arena". They would fall under Customs or "Social" (if you want to think back to Halo3's Ranked vs Social setup). Reach, e.g., doesn't apply commendations when playing in Customs (MP or FF). They do this so people don't just herp derp the cookie/progression system (their armory items and cR stuff).

2. Synapse worked by filming the game, must like that of a Halo3 or Reach game film. This way we had all the information needed to calculate user stats for when they left and came back. Team based or FFA, their stats apply to the actively running game engine's scoring. Just because they switched teams doesn't take away from the fact that they killed a total of 10 people. The same goes for capping a flag. The only particular issue is in how you display this information on your site. Yes, it would be confusing to see blue team only scored 1 cap, while red scored 2, but yet player X on blue team scored 2 flag caps and player Y on red team only scored 1 cap (essentially it looks as if there was a bug and the team scores somehow got swapped in the display). If you're really wanted to get this down and dirty in game stats for extraordinary servers that allow team switching, I would suggest you implement a game timeline view. However, I don't think you can do this with the way you track stats (not to boast, but we could have since we recorded all the state changes in the game)

3. Depends on how granular the stat tracking is. By default I would go with "normal" game settings for "normal" general stats (eg, overall kills). For more custom or explicit stat info, I would offer a custom query (if anything at all) that users could say "how many X have I done/performed in snipers-only games?". Obviously custom game setting queries can only go so far before they're just really complex, so I would just stick to "popular" game types as a filter. I would also suggest, if you do this, going Bungie's StatAPI route and requiring users to have an API key before performing custom queries. Those API keys can only be doing on query at a time, or multiple people can't bog the server down via multiple queries made with the same exact API key.

4. Two different games. They're two entirely different communities, with the former having scientifically been proved to be the lamer! But seriously, two entirely different environments.


PS. Next time you link me to a post asking for my input be sure to link me *to the post* and not just to the thread it was made in (which, itself, was made back in July, causing further confusion)

#19 User is offline   SeanAero 

  • Halo President
  • PipPipPip
  • Group: Members
  • Joined: 24-May 11
  • LocationNetherlands

Posted 24 November 2011 - 11:02 AM

Kornman, thanks for the detailed explanation, I have a much better idea of which approach I should take with all the data.
Let me share a bit of my thoughts so you can get some insight in what I will probably do.

What I try to do with HaloRank is bring something to the table for almost everyone within the community, fun players, skilled players, competitive players, even map makers, everyone except the role playing players and pirates.
With this kept in mind I came up with the following:

1. For the awards I will probably make use of different levels for each awards let's say level 1, 2, 3 (nothing is final here) represented by colors or numbers.
In other words I want it to be possible for the most unskilled players to have a sense of achievement, with level 1 awards, while skilled players, will aim for level 3 awards.
Level 1 awards can be gained by any public gametype setting purely to make it possible for anyone to achieve medals.
Level 2 awards can be gained for gametypes with 100% health and 100% shield settings only on any public server.
Level 3 awards can be gained through HaloRank servers only, servers where HaloRank members only are able to join the servers.
The servers will be small in amounts and have strict rules (low ping?) and will probably be focused on the skilled/competitive playing community.
That's the general idea, what the actual levels will be and their rules will still be determined but this is the general idea.

2. HaloRank receives every 10 seconds statistics from any servers running Gandanur with a stats server key given.
This means that it is possible to produce a timeline like you suggested with an interval of 10 seconds between each data point.
It will not be as accurate as Synapse, but definitely show a general game flow.

As for tackling the issue with late joiners, I was thinking of maintaining an unique player table for each player.
Which would basically mean the moment a player joins in a game their player tables (f1) is imaginary filled with 0-scores.
In other words treating the join event of a new player as a new game start for that player, this so that player does not get affected by previous team results. (good or bad)
This would in my opinion give the most reasonable results to judge a player performance during a game.

3. Sounds fair. I'll have a look at the API key system your talking about. Definitely something to consider.

4. Seriously noted.

View Postkornman00, on 24 November 2011 - 09:19 AM, said:

PS. Next time you link me to a post asking for my input be sure to link me *to the post* and not just to the thread it was made in (which, itself, was made back in July, causing further confusion)


I assumed I did, sorry I usually do when asking for a reply to a post.

#20 User is offline   kornman00 

  • SourceGuy 2.0
  • View blog
  • Group: Administrators
  • Joined: 15-November 01


Users Awards

Posted 24 November 2011 - 12:05 PM

1. An alternative model you may wish to consider is like that of a cake. At the lowest level, you have your very basic cake...uhhh, I'm not a cook so I'll just call it cake stuffing. Before you apply all the fancy icing or candles or sprinkles or (well you get the picture), you have this cake stuffing. Cake stuffing comes in different flavors, but it's ultimately still cake in the end.

Now, to make it more than just a finely put together set of ingredients, you now add icing to the cake. This can help if the cake turned out too dry, but I digress. You now have a second layer on the cake, so to speak (I realize that layered cake is actually different, in that there are multiple layers of different kinds of cake stuffing). To add even more pizazz to that, you can put ice cream or sprinkles on top of the icing.

Now, depending on just how special the cake receiver is, they may only deserve really fucking dry cake stuffing, or cake so moist it would make a virgin teen getting wet over the fact that she's about to get deflowered seem like minor condensation (pun retroactively intended). Maybe this special person deserves some icing on their cake but didn't go that extra mile to deserve sprinkles...or a cherry. Or maybe they only put in an extra mile on the bare minimum and just get sprinkles on their desert-dry dessert...errr, cake.

What am I getting at? Well if an idea isn't starting to brew at the right temperature just yet, think of your levels in terms of layers in this cake. I'm a HaloRank player who just played in a server running some odd gametype and unlocked some considerable achievement
* Cake Earned! You got 15 sniper kills before you died while playing in no-one specific gametype (yes, that's a long achievement description I know, for illustration purposes only)
* Icing on the cake! As a HaloRank member, you earned were awarded some cake for your magnificent feat X (in this case, snipa killz)

Or maybe they played in a "regular" game type with your suggested standard settings
* Moist Cake Earned! You got 15 sniper kills before you died while playing the game it was meant to be played (again, illustration purposes only, not the best or shortest description)

Basically, the levels you described sounded like they fit better in something that was comprised of building blocks. There's a baseline (eg, getting X kills with X weapon), plus additional secondary conditioners to add flavor to the reward (eg, you are a registered HaloRank member, you played in a stock gametype, and so on)

Savvy?


2. Is it absolutely necessary for the server app to do semi-live updates of the server stats? Something you may want to think about doing is having the stats thread push the current stats update to a data consumer which keeps a certain sized pool of these updates before reproducing those X updates to the central server. Depending on the server load (maybe given in a status message or in the updates-received reply) the dedi-side tool can adjust this pool to be larger or to be infinite, in that updates are only pushed to the hive (dedi is worker bee, hive is the central server) after the game has fully ended. If not too sensitive, maybe the dedi-side can offload some of the calculations during this time too to alleviate the server's processing load (or just perform predictions to aid in the hive's final calculations).

If people want moment to moment stats of the dedi, I really don't see a need to do more than what the gamespy QR2 protocol offers (players, map, gametype, scores). Myself, I really don't see any real added benefit from providing extended info like assists, deaths, pumas killed, and so on. Unless of course the server, and especially the dedi's connection (which is already hosting a game for up to 16 players), can handle the constant payloads.

The way you make it sound, the dedi-app should be able to do some primitive, yet useful, recording of the game at a moment-to-moment's notice. So you could possibly still process the game's stats in a stream-like manner. Since Synapse was OS based, we had direct access to underlying game systems and could hook into game updates without adding too much overhead (certainly nothing noticeable). Not sure how the dedi-app you run on operates.

Share this topic:


  • 2 Pages +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users