I was thinking of hiding parts of the defrag voting system.
How the vote message travels usually:
client ->
server ->
proxymod ->
serverVM(defrag)The serverVM then tells every client about the vote
serverVM(defrag) ->
proxymod ->
server ->
client ->
clientVM(defrag)The clients answer the vote.
client ->
server ->
proxymod ->
serverVM(defrag)The vote is over and the server tells the clients the result
serverVM(defrag) ->
proxymod ->
server ->
client ->
clientVM(defrag)The vote passes -> the serverVM commits the changes (e.g. mapchange)
The vote fails -> nothing happens
How the vote message travels after our changes:
client ->
server ->
proxymodThe proxymod then tells every client about the vote.
proxymod ->
server ->
client ->
clientVM(defrag)The clients answer the vote.
client ->
server ->
proxymodThe vote is over and the proxymod tells the clients the result
proxymod ->
server ->
client ->
clientVM(defrag)The vote passes -> the proxymod commits the changes (e.g. mapchange)
The vote fails -> nothing happens
Example:A player callvotes a map(st1). This string is send to the server: "callvote map st1". The string is passed from the server to our proxymod, but the proxymod doesn't tell the server mod(i.e. defrag). The proxymod then fakes the proper response from the server mod and tells everybody there is a vote in progress. When the vote is over the server mod still doesn't know anything about a vote and the proxymod can decide how to count every vote. If the vote passes it changes the map just like defrag would do it.
This enables us to make use of the following features:
context sensitive vote evaluationYou can for example say that only spectators are allowed to vote, or votes of players who are touching the ground count half. I chose those examples because they are stupid and show what the system is capable of.
custom votesThe system can create new votes that change server behaviour.
We could have options voteable that manipulate doors in CTF maps. Those doors could be set to an always open state.
Now thats a serious change of the game. I don't know if it's a good idea but it's a good example for a custom vote.
How about pointless random callvotes? Those would be possible, too.
- Code: Select all
callvote question Do hk's maps suck?
single person votesYou could have some kind of ingame configuration feature. Once you cross the finish line you are asked via the vote system if you want to make the demo available to the public. You are the only one seeing this vote but you can answer it pressing F1 or F2.
The server could spam the user with information on demand. Information like checkpoint times of the rank1 player.
Of course all this can be done in defrag, too. But we don't have the source code to change it. I think taking features to serious is a fun killer. I don't want to destroy cgg's or berserker's work but some record system related votes might be useful.