Bughouse Chess Game Server for 21century - principles and philosophy
(Game server ideas by SKAcz Draft Version 007.201312)
-
I. Philosophy about virtual reality and comunity in general which applies to chess server also
-
1. Virtual reality has to have fixed laws of world ("physics") people understand.
It has to be in sense "people get what people see, ie they can test it by hands"
Example: everybody can test his lag and understand what is time he consumed and time lost on the way thru internet
-
2. Comunity and collected information about members
-
2.0 It has to be determined what server, organization stuff of server (admins) and comunity (meeting in virtual world realized by server, voting) has as purpose and who has which rights and obligations.
Example: Here can be virtual rerality controlled by enlightened dictator or by very slow democratic voting or something between it (like experts have specific vote in specific situations),
but users of virtual reality has to know it before became members and if something changes it has to be done such way that result is like if they never be members if they dont agree with changes.
- 2.1 It has to be determined if virtual reality is just place where real peoples will meet or if is guaranteed right to be anonymous user.
If anonymous is here strong axiom, then all next issues has to strong focus on it.
If on other way is determined that virtual reality is only for real persons, has to be strong focus on verification that user is real person.
Example: User can get account registration only in real world meeting worker of server and only 1 account for 1 person.
Exceptions can be given with determined properties and rules of behaviour to some artificial intelligence accounts to help science and making more fun.
Recommendation for game server: its place when rather real peoples meeting. But also its not required it too strong, because peoples can try it first as anonymous and change decision later.
So priority is to know who is player in real world to meet him in reallife also.
So focus is not to anonymous accounts. So anybody can play even without meeting peoples in real life.
But other (non anonymous) users have right (virtual reality server has to collect and share with them info) to know who is playing as anonymous and who not and choose if playing with him etc.
In sense of principle: users who share more information about themselves should have access to this informations about others of same kind (behaving as sharing more info about themselfs)
and opposite if anonymous dont share informations he has not access to informations of players who shares much more (they behave against him like anonymous also).
The specific levels of informations sets sharing has to be determined and then technically solved by server and organization stuff (admins so called) of server and comunity (voting of members of admins and comunity).
- 2.2 Some info is collected only automatic way, humans have not acces to it, even admins.
Exception can be maybe in some extreme emergency situation using special tool, but it has to be voted by unquestionable majority.
Example: storing pasword, one way only crypted.
Reality: is not so much important if independend link to real user is strong and safe and multi ways (email + phone + we know real people who is)
- 2.3 Some info is only for admins.
- 2.4 Some info is only for registered users.
- 2.5 Some info is only for registered - in real world checked users.
- 2.6 Server should provide users informations logged (enough long history) to allow make them decisions.
Example: social decisions like if to play somebody who was called cheater by some observations requires to be collected detailed info about the behaviour.
In this case seems is enough fully logged game on srver played including times, lags and maybe even ptells and says and kibitzes and whispers.
- 2.7 Server should offer as more options to user as possible and as in virtual reality laws is in accordance to what publicly offer.
But server should offerusers short links, predefined defaults profiles etc. to allow them easy start and later select more detailed setting or choice to make.
Example: we can have parameter that allows players select play only opponents with average lag <250ms per every 10moves, if bigger, then its auto-lost game for lagger.
Or this parameter can be set to be auto-abort if lag>2s per move in average after every 20moves.
But in default this parameter is set to high value to have more fun and less restrict players with bad connection.
So default profile is allowing match more players. And who has more restrictive formula for selecting opponents will be not matched by newbies using more general formula.
But even newbie can switch to predefined profile called like "low lag players" or for tourney some called "tourney f1 bughouse chess profile".
So on one side here can be a lot of parameters of servers for who wish use it, and on other side predefined profiles (sets of parameters with explanation what to expect using it, like example tournament of some properties)
allowing user fast switch among several most used behaviour connected with them.
Example: peoples often playing in virtual game server from home where have fast connection with low lags and wish play with opponents only having low lags etc. so will find best,
by most players used set of variables set, parameters values to use and call this set some profile for some purpose like "fast internet from home playing",
what allows them when home if they want only play with players of simmilar properties and demands.
But if somebody plays from mobile slowinternet laggy connection, he will or play with anybody or only somebody also only on slow connection,
so probably will use widely opened profile to anybody can play with him who dont care about his slower connection. And its free will of every user who will accept as opponent,
but system will make him it as easy as possible. Technically offering many parameters and organizationally by offering predefined sets of values called profiles,
often used by more experienced users or organizers of virtual reality events.
Server has to have gold middle way ie. predefined default profile for everything.
Example: anything can be part of match formula, but if is not it assumes user dont care = using standard default value.
Example: on server where most of peoples is fast connection players default can be changed to be more restrictive to laggy users,
but still there should be something like "profile without limits" with explanation "rarely used by users, if u use it prolly u will be in minority subcomunity in present server comunity".
Sure it can sounds also "dictator of server order u use this profile, otherwise u will have this and this limitations" or even "u will be restricted from doing this and that and be only observer".
- 2.8 Self organization of server technology, organization stuff and comunity is opened by right wide using of various options values available for users
and various informations collected, logged automatically complete way enough to allow comunity make decisions.
Example: press and news is cool feater in democracy but only works if all relevant informations are available allowing ask even unpleasant crucial questions related to topic discussed.
-
3. Virtual and real reality access and behaviour
-
3.1 It should be determined if vision is that virtual reality is just some place which allowing meet peoples which are in real world far a lot to meet personally etc.
or if it has vision to be totally new reality leading to new and maybe or on purpose totally different behaviour and habits of players.
Example: playing chess over the real board (otb) often players has to chech illegal moves using own mind. If server should be only virtual analogy of real world,
then should be implemented illegal move way leading to same behaviour otb and online, ie. atleast for example allowing let king in check and then allowing opponent manually claim it.
Otherwise peoples will learn virtual reality has different laws (physics) and then coming to real world will mistaken a lot by overlooking, ignoring threats and losing because of it.
Recomendation: chess server should only automatize what is automatized in real world by default. But in case of things which saving time can be made exception.Like maybe auto-playing some openings always same way. Not only 1.e4.
-
4. Stability, robustness is a highest value.
-
4.1 All improvements in technic realization of virtual reality server should be fisrt hard tested on some beta developing server, which can offer new features. And only then moved to main stable version server.
It may require majiroty voting of users.
Recommendation: stability of VR server should be one of properties which is part of vision and guaranted features.
- 4.2 All important features if not all has to be able tested in any moment. If some external tool or debug infos needed, has to be public.
Because otherwise the server stability and validity of laws (physics) of virtual reality cannot be guaranteed and be part of vision.
You have to get what You see, You have to see what You expect, You have to be able test that what You get is right.
Otherwise virtual reality could be not "real" in sense of "stable physics laws" enough and it will be just chaos.
-
5. Open source and evolution
- 5.1 To allow more developers join and improve server, they should have possibility to clone server and develop outside and then when they will successfully release some addon or improvements,
can be added to develop and stable server also. No developer will waste his work if server provider crash. No sources will disappear. Others can continue where previous ended.
Same about any other informations from server existence, like data of games, organization experience, etc. can be copied outside of server.
Example: If somebody wish run some serie of tourneys under specific conditions and then count performance of teams or players in bughouse,
he can, cos he can easy access all data collected during event in wchich games were played.
Example2: If somebody will wish test anything "weird" but will get peoples for get it try, why not, maybe from it can coming something useful for everybody on main server,
evolution need more ways opened to go forward. Not only in code but also in society.
- 5.2 Technically should be preffered solutions which are multiplatform or support connecting from various platfoms.
Recommendation: modular structure from components is one way not only from technical but also organizational views.
Example: Timeseal is only one way. Here can be used time_used_by_player client application auto sending to server and can be trusted it doesnt lie
and the trust can be solved organizational, comunity way using all sources like logged informations and all free will and options,
results can be then for most of population same as hard coded tries of cryptography which maybe can be broken anyway from time to time,
but the efffort in security can be maybe moved to evolution of VR place and comunity in general instead of solving restrictions.
- 5.3 Solution that offer to enhance virtual reality later more ways, should be prefered, technology evolves and less energy can provide some.
-
6. Users view
- 6.1 Realization (or no realization or timing) of every thing in virtual reality should be viewed and discussed from the most ergonomic, easy, likely behavior which will user of complex system do to achieve his goals.
Example: If on chess server is not possible playing slower bughouse chess (time for move = delay = bronstein or any equivalent not implemented),
then players are forced to go only one from 2 paths: or trying play as fast as possible or leave the server and try play slower bughouse somewhere else or play other game.
Lets give players 3.possibility which even if can looks like dividing from comunity whole subset of slower players, always can be used by all. And true is here are always players more and less universal and are welcome in all environments to make it rich bringing different experience from others allowing evolution.
There is hope that combining principles 1 - 5 wisely we can get any vision realised successfully and realize it in real world.
Motto: "If user of any system says: Nice its easy, i understand, I will try, he will return later with no effort required from system to advertise."
Motto: "Dont forget about simple (human) goal by focusing on big technical challenge."
Motto: "If something is in mind of people, its real. Even if would be only dream, or ... nightmare.
Lets do things such way to have nice dreams for tomorrow."
-
II. Practical questions, examples, experience, discussions :
-
1. Chess and bughouse chess, otb and online present and future
Chess is called king game, because is played by many. But many is word changed by moment whole world started be online.
And can be online much more from all views described above. Especially if virtual realities will be useful and will safe time
and not wasting time by being anti-ergonomic, closed, hard readable, bad understandable, complicated accessable etc.
Chess is complicated enough, nobody is interrested in having more complication to play it. It is supposed to be fun and training of creative thinking.
Here is in present: fast low level laggy internet connection, windows, linux
and more and more same with android and android with more or less laggy connections.
But all this platforms can play chess, bughouse chess, chat, etc.
Actually in moment more childs,students and people in general will have android tablets,
the importance of showing them place they can connect easy to and play is increasing rapidly for advertising chess and especially bughouse chess as game in wide sense of word.
Bughouse chess is dynamic game playable in short time and its real time.
Not much peoples playing chess long hours (measured by population total), but many playing from time to time and many childs trying,
lets give them opportunity to try it! They can having fun by learning strategy thinking.
And maybe its possible add to server even other games. Some which most of comunity could welcome.
It can be chess experimental variants or even arcade some maybe, who knows.
Online virtual chess environment should be as much as real world as possible, we wish it just be digital version of chess club with tables and a lot of fun.
Only condition is here: everybody has to find here interresting opponent. So let keep comunity as wide as possible and restrictions on zero if possible.
Only stability of server can be more important than avoid restrictions. No stability of ratings or anything else, what can be self regulated by using profiles and options,
is worthy to use restrictions to support it.
- 2. From user view chess server has to be place where can go and for free play some number of games with interresting players and having good feeling how to spent time.
Example: On starcraft server u can play with friends even for free as terran. But u can try more for moneys.
Here is also a lot of payable systems, best is credits one, u pay only for what u get. and u always get a lot for free.
Cos few enthusiasts using system often can often pay something to hold things runned and from time to time focusing on game advertise it and multiply :)
-
X. Bughouse chess server
- 1. Realize perfect working and hard tested bughouse chess server with this basic features:
-
a) time working fine, lag working fine - what u see is what u get, u can test it
Some technical explanation and terms to allow discussion:
Here are always 3 important numbers related to any event (which can be move, flag, or any action-reaction, even check if client is still alive)
- 1. outgoing_time (when server sending it to client)
- 2. ingoing_time (when server getting reaction on it)
ingoing_time - ingoing_time lets we call used_time (time interval client spent to react, no matter if its client automatic or + human action)
- 3. thought_time (time) - time client sending that was used only for thinking to making reaction
Here we can assume that client dont lie (if thought_time > used_time then client lie, so we set it or to used_time (we friendly) or to 0 (penalty for cheaters))
And then when we have thought_time the term lag appears.
lag= used_time - thought_time then.
And now to determine the thought_time we can or believe to client, or believe to our client only (like i do in DoubleChessBoard),
or we can use some tech to external way to run over client to guard it
(this is what timeseal do??).
for testing and playing is also important term "presumptive time" what is time which in timeline server or client is
see on clocks like last time ratified by server minus time runned meanwhile.
Typically its on client side the presumptive time of opponent, which can be increased by adding him lag back.
Technically: there are 4 players so 4 times, 4 Last times (LT1,..,LT4 ratified by server in moments timestamps LTM1,..,LTM4) and 4 Presumptive times (PT1,..,PT4) (calculated in timestamp LTNow like PT1 = (LT1 - (LTNow - LTM1) ) ).
Because 4 players are but only 2 on move, always 2 presumtive times are equal to last ratified times.
And now: always in any timeline has to be that sum of : presumptive time of player on move + last time of his opponent + lags is same for both boards after every move (in any moment).
Example1: Well actually its possible using starcraft realtime solution without timeseal, we discussed it:
1. allow delay parametr of game in ms so u can start game like 2min plus 300ms for move
but even better is
2. "wait" parameter
allow run game like 2minute 250ms(wait) Action:Wait(Ns) what means if somebody playing under 250ms server will wait and play move when total time_consumed (time server got reaction - time sent move) =wait=250ms,
if some player will play slower than 250ms server will freeze the game to max Nseconds and then player losing if no reaction. Can be improved even by some command like morewait 10s which will if opps wish allow waiting on opponent 10s longer (can be useful in tourney or so).
And parametr wait and Action:Kind(Wait,Abort,Lose) and values can be find by comunity what is best as self evolving. Cos it will be part of match command.
Sure we set some reasonable deafult.
Example2: Also is possible to trust client when sending time_used by player and time_consumed (time reaction came from client - time move gone from server) - time_used is lag then.
And if somebody lags too much is on comunity which should have all infos logged how to react if play such player.
- b) bughouse can be played in atleast 3 speeds:
- b1) F1 bughouse formula one X minutes per game with no time for move (1 0 or 2 0 or 3 0)
- b2) Time for move 1 - 3s with 10s - 3 minute reserve
- b3) Slow bughouse: 4s and more for move with 10s or more reserve,
here belongs also 10s for every move only (10 10) total time control,
and 5-10s per move plus 1-3minutes reserve which can be played from mobile phones with 5s lag also.
- c) classics chess - atleast blitz time control has to be allowed to play
- c1) F1 1 minute per game or 1s for move and 10s for game
- c2) lightning 2 minutes per game, 120 =< time for move * 60 + reserve =< 180
- c3) superblitz 3minute per game, 180 =< time for move * 60 + reserve =< 300
- c4) blitz time 5minutes per game, 300 =< time for move * 60 + reserve =< 900
- c5) rapid time 15 and more minutes per game, 900 =< time for move * 60 + reserve =< 3600
-
2. Realizing perfect working and easy for newbies understandable client download, install (unzip only_)
and easy registration and play, manual. Also predefined profiles for easy start.
Maybe teaching bot or atleast human like opponents.
-
2.1 Thief
- 2.1.1 Connection predefined add to it to be easy selected
- 2.2 Client for linux?
- 2.3 Client for android? (see html client also)
- 2.4 HTML/javascript universal client needed for all platforms, no install, easy works
- 2.4.1 Can be without timeseal.
For playing from tablets or mobile phones if laggy less or more can be used bronstein time control
and played slow bughouse chess and blitz or rapid chess and not faster time control.
-
3. Organizing tourneys.
-
4. Website with important lastX games recorded played on server.
- 4.1 chess and bughouse DB ?
-
5. Ratings
- 5.1 Rating system should determine approximate level of skills of bughouse chess player,
and because its bughouse team game should motivate players to make strongest teams.
Recommendation:
Bad experience from FICS: On fics highest rating u can get if u play with a lot of weaker pard , chess it (playing much faster on own board, having here 2x more move (its something u rarely see if 4 players simmilar power playing)) cos gives u also simuling advantage + power, this leads to behaviour preffered,
but we need this on new bics: To see as many interested games of teams like 2300+2300 or 2500+2500 , and also allowing high rated players teach something to newbies and weaker,but not affecting their rating so much. Also simuling lets be allowed.
So here should be bigest rating change if playing teams where both partners have same or close rating
and if opps team having also close rating.
In old code it was implemented this idea partially but after years, and more analysing, the principle seems could be:
1. everybody can have 2 accounts, like Bugger, BuggerSimul (XXXSimul can be only partnered with XXX)
2. rating changes will go very down if difference between players in team increasing,
Specific values needed to be determined to work good way.
But seems its easy something like if 2500 (or any value) pard 2450 (or any value+-50) and plays any team where is difference between parnters rating in 50 pts,
the game can be played for biggest rating change (lets call it game rating pool) like we can say 10 (+5 -5 if teams are simmilar rating, and +1 -9 when between teams is gap like 400pts, but still beween pards in both teams is gap in 50 pts) or maybe 20 (+10 -10 if teams are simmilar ratings, and +2 -18 when between teams is gap like 400pts, but still beween pards in both teams is gap in 50 pts).
And as increasing gap (= rating difference) between partners in team,the game rating pool decreases,
so if if for example 2000 partnering 1900 the rating pool going from 10 to 8 (or from 20 to 16), so for every 50 rating pts can be rating pool decreased by 2 (by 4).
3.starting rating is taken from fics (i think maybe something like (actual+best)/2 ) and high rd set up to autoconfigure maybe or is set to 1900 for newbies (with big rd), rating for Simul is default Players rating -200 with high RD
And finally
0. "Team rating" Formula to calculate rating changes will lead to see most rating changes (gains (!!! here is motivation and behaviour) and losts) when teams made from players with close ratings against opponents with same properties. So bigest rating gain/lose can be if for example 2000+2040 winning against 2280+2320, and smalest when 2500+1500 plays 2200+1800. Such way if here will be on server some 2800 player definitelly it will be with some very high rated (2700-2800) pard, what is like on otb tourneys.
This way we motivate players make best teams. And bughouse is team game, so should be played this way.
Sure u can play for few points even if 2500 pards 1500, but it will be much less change for 2500.
(thinking here about 1500, but also should be not too bigger change, maybe a bit, to motivate weaker players learn play better, but not too much cos they should not gain rating by making simulBot for much stronger player)
Y. To do
-
1. Perfect working bughouse is good to advertise not sooner before its tested with friends who know testing,
some chessplayers hate when beta versions waste their time. This invite only to stable version.
So add warning: this is only testing version!!! until stable hard tested one. Time needed to test!
But we can have fun sooner already if we know limitations.
Here is some history info:
SKAcz fi note 10:
*********** Project: Game S E R V E R for 21century *********************
I made analysis and: We definitelly need for BUGHOUSE INTERNET CHESS new
solution corresponding with present situation and technology! Features
possible: 1.realtime synchronization (like in rts games (udp protocol!? -
every 0.1s send clocks and mouse pos) to see updated time (and maybe even
touching pieces) during opponents thinking) 2.time for move=delay what is
for bughouse the same as what inc for standard chess 3.full online
analyzing of recorded game (double-board,times) with others 4.playing also
from mobile smart-phones. 5.TourneyBot(single changing pards/teams). If
you share this idea - let me know! Add link to Your fi notes!