ID:152555
 
Currently I am working on a castle style game, with a major difference being it is conituous. The difficulty ramps up as time progresses. There are still many things that need to be added, but many people are playing the game as I work on it. The last thing that will be added is an official 'END' to the game, my question aplies to how I should leave it until that happens.

The way I see it there are only 2 options.

-Currently the way I am balancing things is to have the difficulty ramp up such that anyone will die eventually, no matter what thier skill. This way players can try to keep improving thier time, as I keep adding more content on the end, and adjusting the difficulty allowing them to get to it.

-Many players have suggested on the forums that this is frustrating, it feels like you always lose. I've tried adding a summation congratulating them on thier time when they die. But what it seems like they want is the ability to, with enough skill survive indefinately.

The way I am currently handling things is what I feel like I personally would enjoy more, but maybe I'm wierd, what do others think?
People like to have the sensation of winning, of being able to beat the rest. Thats why I don't like playing space castle, because you never get the sensation of getting farther like you do in castle.
Sounds like you need high scores.

Just like the video games of a bygone age with endless waves of enemies. Players may never see "the end", but they can fight for top HUB score!
In response to Jmurph
Exactly, that would definately help. What would be a good way to manage something like this automatically, when people are allowed to host thier own servers? Castle is a mess cuz everything is manual.
In response to Abra
A PHP scoreboard, I suppose.
In response to Papoose
Yeah, that's how I'd do it. Set up a webpage somewhere that supports PHP, and use world.Export() to record high scores.

Of course, if you do it this way, keep in mind that anyone can just figure out the URL you're using and point their web browser at it to fake high scores. So you'll need to figure out a good way of securing it using some form of encryption that is difficult to duplicate. Perhaps combine the high score and the player's key (but mangled in some fashion) with some random characters, call md5() on the result, and send that to the high score server to be verified. (The server should repeat the same process and make sure that the result matches what it's been sent.) It won't be impossible to crack (nothing ever is), but it should stop all but the most determined people.

(If anyone was to crack it, the most likely avenue of attack would not be by reversing the MD5 hash - that's pretty hard to do - but by exploiting some flaw in the system, like reading the hashing algorithm out of the executable. BYOND is slightly less vulnerable to an approach like that since there are no publically available decompilers for DMB files, but that doesn't mean much - obscurity is not security.)

Checking the user agent string to make sure it matches BYOND's is a nice additional precaution, though be aware that user agent strings are incredibly easy to fake, so you definitely shouldn't rely on this.

If you're feeling really evil, you could make it so that faked high score submissions appear to have succeeded and do show up on the high score list, but only for the IP address that submitted them. (And you also log such attempts.) That way, the person trying to scam the system thinks they've succeeded when really they haven't.
In response to Crispy
Does't BYOND have a hub_score system though?
In response to Flame Sage
What's that underscore doing there? :-/

BYOND does have a hub rankings system, but it's not well suited for individual high scores. It's meant to be used for ranking players against each other based on directly competitive games (like chess), not on high scores.
Here's a thought: allow a setting for # of waves, which can be finite or "infinite". It could be called "difficulty", where "easy" is perhaps 20 waves, "newbie" is 40, and "tough" is 100, "heroic" is 200, and "legendary" is infinite. The waves may be continuous, but you could count a wave every time the difficulty ramps up a little, or every 10 monsters, or every 10^wave# "points" worth of monsters, or whatever works.

The upshot is, players can opt to either play a "beatable" game (the difficulty of which they can control, to suit their play skill) or they can just see how long they can last. New players would probably enjoy beating "easy" and "newbie", whereas older players would have fun trying to beat "heroic" or challenging high scores on "legendary".
In response to PirateHead
Yea. the enemies could be worth points?
or the socre is on how many enemies the player kills.

Although, having seen a few games of Castle and played one or two. Hunters(?) and traps or Mages(?) Get majority of the kills.

and PirateHead, Castle already has settings, like Easy- Very Hard with set number of waves. ;)

Having a game of 4 people Get to to like wave.. 55 on "infinite" all of them would take up 4 spots on the Highscore Board. =\ Maybe only the leader has the spot and the other 3 are listed beneath the leader. So it doesn't take up actual spots?
In response to Mechanios
Or maybe Last Robot Standing style and have them name their team.
In response to Crispy
I'm aware of the security concerns. Even unsecure though, this would be alot of work, especially since I would have to learn php. Could the same thing be accoplished with a .net web service(uses soap), or will the protocals conflict?

If so I may just create obfuscated client side save files recording high score, and display them in game is all. That would give some temporary relief giving players some sense of accomplishment, though the scoreboard would be better.
In response to Abra
Well, I'm sure the site I co-manage with Evi of au will be happy to help you with the scoreboard. :P

http://www.ev-xe.net/scores/dragster.php
http://www.ev-xe.net/scores/snake_pit.php

The scoreboards were developed by Tiberath and Evi of au. Yay for them.
In response to Abra
You can use any web scripting language you like. It really doesn't matter. I only mentioned PHP because it's pretty ubiquitous.
In response to Mechanios
Simplest solution:

High Scores:
JubJub, elpes, duraT65 and camopleat 55
surge799, JubJub and Radiatorz 41
squabbles 29
harpy_63 and legunno 26
squabbles, duraT65 and Radiatorz 23

Add an element of risk / payoff. The player is given the option of escaping the assualt, and therefore ending the game, or continuing to defend. The player may need to build some sort of escape device, or travel to an escape area, or maybe just click a button saying 'end game now' at the end of a turn. Points are awarded only if they don't die; in other words, the player must make a judgment regarding wether or not they can survive another assualt. If they judge correctly, their points go up and they are given another choice, if not, they lose everything. This could be represented tangibly in the game as number of troups the player unloaded, number of evacuees saved, leters of oiled pumped, etc.

This way the player gets a sense of a definit end to the game while also giving the opportunity for unlimited advancement.