marcusklaas / achtung--die-kurve- Goto Github PK
View Code? Open in Web Editor NEWRemake of the classic Achtung die Kurve using HTML5 websockets
Home Page: https://achtung-starter.azurewebsites.net/
License: GNU Lesser General Public License v2.1
Remake of the classic Achtung die Kurve using HTML5 websockets
Home Page: https://achtung-starter.azurewebsites.net/
License: GNU Lesser General Public License v2.1
Omdat # een anchor is en geen paginareload veroorzaakt. Op te lossen door ?game= te zetten. Is wel even de vraag of die met javascript ook weg te halen is. Dat is nodig anders probeert hij de game elke keer te joinen als je in lobby komt. Dit is echter weer op te lossen door variabele bij te houden die aangeeft of je al eerder de game hebt proberen te joinen. (dus dat je enkel die game probeert te joinen wanneer je voor de eerste keer in lobby komt)
voor aantal berichten geen json gebruiken om bandbreedte te besparen.
als we de spelers in een spel toch gameid's geven, zijn 3 bits genoeg om te zeggen over welke speler het gaat (max 8 spelers)
als we voor de tick het verschil met de vorige tick die we stuurden gebruiken, zijn 11 bits al genoeg voor een maximaal verschil van 49 seconden, bij 24ms per tick.
om bandbreedte te sparen en toch spelers in de lobby goed op de hoogte houden:
createGame stuurt pakketje naar iedereen in lobby: yo, ik ben game gestart
om de zoveel seconden hele lijst sturen naar spelers in lobby om op te hoogte te houden van games die gestopt zijn en een veranderd aantal spelers
als client zo'n pakketje ontvangt moet ie ff de scrollstand onthouden, de lijst herversen en proberen zo veel te scrollen. voor kleine veranderingen kun je dan nog redelijk de lijst bekijken (je springt dan niet om de zoveel seconden naar boven)
idealiter: alleen sturen als er wat veranderd is en niet aan iedereen op dezelfde tick
misschien ook ff een bool in config.js toevoegen om te filteren/ sorteren op game state, zodat we gemakkelijk kunnen aanpassen welke games het best zichtbaar zijn (reeds gestarte games zijn bijv niet zo heel interessant voor spelers en daarom wellicht liever onderaan of helemaal niet zichtbaar)
Dingen verdwijnen van baseCanvas bij het tekenen van pencilsegmentjes.
de server segfault als je (te snel?) te vaak (dis?)connect. om te simuleren: ga naar diekurve.net en houdt f5 in. segfault in < 2 seconden (start wel ff de server daarna weer ff op pls ;P)
oke hoe kan dat? opsomming van dingen die me te binnen schieten
zoals rik voorstelde, het huidige punt systeem beloont het niet echt om als allerlaatste dood te gaan. ik stel voor dat we elke game struct ook een pointer naar een 'puntenfunctie' geven. zo'n functie neemt dan 2 argumenten: aantal spelers in de ronde en als hoeveelste je dood bent gegaan en returnt het aantal punten dat je krijgt. op deze manier kun je gemakkelijk puntensystemen inwisselen voor andere, omdat je enkel die pointer in game hoeft aan te passen. zo ist ook makkelijk misschien later mogelijk te maken dat hosts zelf hun puntensysteem kiezen.
edit: oja en om te zorgen dat games altijd eindigen moet zo'n functie aantal eisen voldoen: niet-negatief en tenminste 1 speler per ronde positief aantal punten
This game can use a redo in rust
ff iemand met gevoel voor opmaak laten kijken naar de verschillende grijswaarden die we gebruiken. over het algemeen vind ik het niet storend ofzo maar volgens mij gebruiken we nog steeds de kleur grijs voor de canvas die ik gewoon uit m'n hoed trok voor het testen van het tekenen van een lijntje toen die dag voor onze laatste presentatie seminar :P
enige waar echt naar gekeken moet worden is bijv de table headers van de gamelist, die hebben te weinig tot geen contrast met de achtergrond daarachter. ik denk dat dat wel prettig zou zijn. dus iets lichter/ donkerder dan ze nu zijn.
zelfde eigenlijk voor de vakjes waar minimum players/ maximum players in staan. te laag contrast.
oh en iets dat me opviel toen ik bij iemand anders op het scherm keek, dat die "Invite your friends" vakje roodig is ofzo? ik zie het niet zo op mijn scherm, het is een beetje een oud ding volgens mij :P maar dat lijkt me niet zo gepast iig. zou meer blauwig/ wittig moeten zijn? het is meer van "yo, wist je dat dit ook kan?" ipv "er ging iets fout, hier moet je echt ff aandacht aan besteden!"
owja en nog 3 minidingetjes:
de onder- en linkerborder van het game lijken net een andere waarde grijs, zou wel mooi zijn om die t zelfde al te maken
de editor heeft nog geen borders
misschien een mooie tweak om rechterborder van de game/ editor enkel te laten zien als de game in hoogte beperkt is en enkel een onderborder laten zien als de breedte de beperkende factor is
Waar je punten krijgt voor andere dingen dan lang overleven.
het kan nu in moderne browsers met javascript!
http://hacks.mozilla.org/2012/01/using-the-fullscreen-api-in-web-browsers/
misschien automatisch fullscreen bij het inloggen en uit fullscreen bij het disconnecten?
zou denk ik wel gaaf zijn -- lijkt het net een desktopgame
Elke player heeft op elke client zelfde kleur. Players mogen zelf hun eigen kleur kiezen (per game of bij connecten?). Wat goochelwerk nodig wanneer players kleuren hebben ze lijken erg op elkaar.
Pickups of activeerbaar. Ideeen voor powerups: extra speed voor zelf, minder speed voor zelf, extra speed voor anderen. minder speed voor anderen, hogere hoeksnelheid voor zelf, lagere hoeksnelheid voor anderen, onstervelijkheid voor zelf. Allemaal tijdelijk natuurlijk ;-) Inversie van sturen is geen goed idee, want makkelijk te omzeilen.
+1 in canvas next to every living snake's head when someone dies. add 1 score to each of those players during game. we might want to fade those +1s out after a while. implementation? two options i can think of
hoe te herproduceren:
mogelijkheid om vaste startposities te zetten voor custom maps. reden: maakt complexere maps speelbaar en maakt nieuwe speltypes mogelijk zoals hindernisbanen of racemaps!
implementatie-idee:
druk een toets 1 tot en met 8 om speler lokatie te zetten
1e druk op de kaart geeft positie aan
2e druk geeft richting aan
daarna wordt de speler gedeselecteerd
druk ~ om speler onselecteren. als ~ wordt gedrukt tussen 1e en 2e klik, vergeet dan de lokatie.
als speler lokatie al is gegeven en wordt opnieuw geselecteerd en gedrukt voor de 1e keer, vergeet dan de oude positie.
server moet deze startlokaties ff onthouden uiteraard, kan mischien wel random kiezen welke speler op welke lokatie start. als #spelers > #vaste_start_lokaties, kies dan random startlokaties voor (#vaste_start_lokaties - #spelers) spelers
hoe te doen voor touch controls??
In browsers die volgens RFC 6455 communiceren. Op te lossen door libwebsockets aan te passen. Zou in principe niet veel werk moeten zijn, maar moet wel even goed de verschillen specificaties v8 en RFC 6455 bestuderen.
zet ff in de chat een message wanneer lokale speler doodgaat dat ie mag tekenen (als het ook mag ;P) zodat nieuwe spelers weten dat ze niet enkel hoeven te wachten wanneer zij afgaan.
wanneer te tonen?
Er zijn nog geen touch controls en de muisbesturing is ook niet helemaal zoals zou moeten zijn. Misschien meer zoals de muis/ touch besturing van Pencil?
dan zie je meteen wie er eerste en wie er laatste staat.
als er veel games zijn dan verspringt die lijst de hele tijd en vervelend dan die buttons te drukken
Technisch gezien wel een uitdaging, zal wel wat javascript aan pas moeten komen..
Alle messages die server accepteert groeperen en per groep een teller bijhouden zodat er niet teveel per tijdseenheid binnenkomen.
misschien een klein knopje om de sidebar te showen, dan kan je meteen ff de chat lezen. denk dan wel de canvas resizen zodat ie in zn geheel zichtbaar blijft. dan ook knopje nodig om weer fullscreen te gaan.
bij endgame kan die dan automatisch de sidebar showen - nu is het nog onduidelijk hoe je uit fullscreen gaat bij endgame
Zoals die button-achtige check- en radioboxes. Zijn wel mooi en ook makkelijker te bedienen op touch. Oja en ook prepended text inputs voor min/ maxplayers.
Onthoudt jouw custom game settings, naam en instellingen. Misschien zelfs met ranking?
wat tonen we?
contact, feedback, klachtencommissie, servicedesk, devnull, suggestions @ diekurve.net?
Komt omdat touchControls worden genegeerd wanneer speler dood is.
speel maar es tegen een bot -- niemand krijgt punten ;o
daar kan de host dan bijvoorbeeld zetten welke custom settings hij gebruikt
wij kunnen onszelf beetje gaan aanmelden bij sites die websocketdemoos bijhouden of sites die linken naar online (multiplayer) games
en toevoegen aan de lijst van clones op http://en.wikipedia.org/wiki/Achtung,_Die_Kurve natuurlijk!
liefst wel nadat we ergste segfaults zijn opgelost :P
bijvoorbeeld tekst midden op canvas met winnaar
dit en dat werkt niet -- fix pls!111
Het zou wellicht nog mogelijk kunnen zijn out of sync te geraken. Heeft nog laatste ronde testing nodig.
Css-expert wiethoofd heeft gesuggereerd dat gecentreerde tabelelementen strakker eruit zien. Maar dan niet de playernames. Is een poging waard.
Loopt niet soepel. Onderzoeken door profiler te runnen?
dus dat je de settings/ map/ startposities opslaat en dat de server ze opslaat in file of database en dat jij (en andere mensen) later weer met dezelfde map kunnen spelen.
ik stel voor om niet enkel map op te slaan, maar ook de game settings. dit is bijvoorbeeld van belang wanneer je een hindernisbaan maakt voor een bepaalde (turn) snelheid of dat je ervan uitgaatdat je door muren heen kan.
ik kan me ook voorstellen dat je gewoon chille settings hebt die je vaker wilt gebruiken zonder dat er per se een map bij hoort.
en dan een soort lijst bij een nieuwe custom game die je kan oproepen om te kiezen uit een preset. om de goede deruit te filteren misschien een soort systeem bouwen met thumbs up/ down? maar da's lastig te handhaven zonder accounts voorlopig. dus misschien #gespeeld betere sorteermethode tot dan.
later met accounts ook mogelijkheid tot persoonlijke presets/ maps
op ipad getest van ouders vandaag
Geluidjes toevoegen voor dingen zoals chat, verkrijgen van pencilteken rechten, leaveGame, doodgaan van andere spelers. Ook huidige geluidjes vervangen door beter passende. Bovendien alles in zowel MP3 als OGG formaat op server zodat ondersteuning onder meeste browsers.
Toe te voegen in custom games door host.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.