[Android] Multiplayer game

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • NickThissen
  • Registratie: November 2007
  • Laatst online: 25-05 11:39
Hoi,

Ik ben mezelf langzaam aan het leren om te programmeren voor Android. Ik heb een spel in gedachten dat ik graag zou willen programmeren, maar voordat het zover is wil ik eerst de verschillende delen die ik nodig zal hebben apart leren.

Het belangrijkste onderdeel zal vast en zeker de communicatie tussen verschillende spelers zijn. Het spel is namelijk een multiplayer (turn-based) spel. Ik heb al een aantal SDKs gevonden die adverteren gemakkelijk multiplayer games te kunnen maken, maar voor zover ik kan zien is alles 1v1. In mijn spel wil ik toch graag meerdere spelers tegelijk kunnen laten spelen.

Zonder alle details van m'n idee te onthullen zal de 'game flow' ongeveer als volgt moeten werken:
  • Meerdere spelers (zeg een stuk of 6) joinen een 'room'
  • Een van de spelers is 'aan de beurt' en heeft een bepaalde tijd om een actie uit te voeren (een dag ofzo).
  • Als deze actie voltooid is, dan krijgen alle andere spelers (tegelijk) een bepaalde tijd om een reactie uit te voeren.
Een stom voorbeeld zou kunnen zijn dat de speler die aan de beurt is een vraag stelt (bijvoorbeeld "wat is 3+4?"), en dat de andere 5 spelers daarna die vraag moeten beantwoorden. De 5 spelers die niet aan de beurt zijn zullen dus eerst moeten wachten op de speler die wel aan de beurt is (hij moet zijn vraag formuleren en krijgt daar dus geruime tijd voor). Wanneer de vraag gesteld is hoeven ze echter niet meer op elkaar te wachten, ze krijgen daarna allemaal een bepaalde tijd om een antwoord terug te sturen. Zodra iedereen een antwoord verzonden heeft (of de tijd verstreken is) is een beurt voorbij en gaat de beurt naar een andere speler. (Er is dus niet 1 speler die altijd 'aan de beurt' is of host is ofzo, de beurt gaat gewoon van speler naar speler).

Tijdens het wachten op de speler die aan de beurt is (en het wachten op antwoorden van de rest) kan het spel gewoon "uit staan", er moet dan een notificatie komen als er een vraag gesteld is of als alle antwoorden gegeven zijn. Denk aan het bekende Wordfeud (Scrabble). Speler 1 speelt een woord en moet daarna (max 4 dagen) wachten op de andere speler maar hoeft natuurlijk niet constant het spel open te hebben, hij krijgt vanzelf wel een berichtje als de andere speler klaar is met zijn beurt.


Mijn vraag is nu eigenlijk wat ik hiervoor nodig zal hebben. Zoals ik al zei heb ik een aantal SDKs gevonden die multiplayer games zouden kunnen maken, bijvoorbeeld Skiller en mages, maar deze ondersteunen voor zover ik kan zien alleen 1v1, dat zal voor mijn spel dus niet gaan werken.

Ik ben dus bang dat ik zelf wat moet gaan schrijven, maar daar zie ik wel een beetje tegenop, dat lijkt me vrij lastig. Ik zal dan ook zelf een server moeten hebben waar alle clients naar connecten, neem ik aan? Wat voor server zoek ik hier dan? Ik heb wel een webserver waar mijn website op draait, maar ik denk niet dat ik die zo makkelijk kan gaan gebruiken..? Ik weet vrij weinig van servers op deze manier, kan iemand me in de goede richting sturen?

Ideaal zou natuurlijk zijn als er een bestaand 'framework' is zoals Skiller (wat er op het eerste gezicht best goed uit zag, tot je na het registreren ziet dat het alleen 1v1 turn-based games ondersteunt), dat de server en alles voor me regelt (eventueel tegen betaling, maar natuurlijk liefst gratis).

Bedankt!

Mijn iRacing profiel


Acties:
  • 0 Henk 'm!

  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 13:19

BoAC

Memento mori

Als het toch turn-based is, waarom dan geen webservice ofzo die tegen een DB aan praat met daarin een status tabelletje? Dan kun je daarmee zelf multiplayer eenvoudig implementeren lijkt mij..

Acties:
  • 0 Henk 'm!

  • NickThissen
  • Registratie: November 2007
  • Laatst online: 25-05 11:39
Ja, zoiets zal het vast moeten worden als ik het zelf ga implementeren. Het wordt dan een client-server communicatie neem ik aan, de server houdt in een database alles bij en de clients sturen die informatie op... Ik heb al wat gezocht ivm client-server communicatie in android, en de voorbeelden lijken wel erg kort (dat kan duiden dat het erg makkelijk is of dat het erg slecht uitgelegd wordt, ik hoop het eerste aangezien ik er niet veel vanaf weet...). Ik zal dan ook vast rekening moeten houden met mogelijk slechte internet verbinding. Volgens mij wordt zoiets opgelost door de clients hun berichtjes steeds opnieuw te laten versturen totdat de server alles ontvangen heeft en dit dan weer terug gestuurd heeft naar de client?

M'n voornaamste probleem is dat ik geen idee heb wat ik als server kan gebruiken. Zal ik hier zelf een server voor moeten kopen? Ik heb wel een website die op een webserver draait maar ik weet niet of ik daar iets mee kan behalve via een (online) control panel de bestanden op de website bewerken.

Of regelt Google dit voor me? Zoiets las ik laatst een keer, dat je je 'server app' kan uploaden... Ik snap er nog niet veel van. Ook las ik iets over een of andere google push service die vrij nieuw zou zijn, maar ik ben er nog niet achter of dit een vervanging van het hele client-server gebeuren is, of gewoon een versimpelde implementatie, of iets compleet anders :S

Het zal wel duidelijk zijn dat ik niet echt weet waar ik aan begin, dus als iemand een artikeltje oid heeft waar het een en ander duidelijk uitgelegd wordt dan zou dat heel erg op prijs gesteld worden! :)

[ Voor 6% gewijzigd door NickThissen op 01-11-2011 09:25 ]

Mijn iRacing profiel


Acties:
  • 0 Henk 'm!

  • EricBruggema
  • Registratie: Maart 2007
  • Laatst online: 05-05 09:19
Je hebt een leuk idee, maar zal je een berg met werk opleveren! :)

Zoals BoAC schreef zul je het beste zelf een klein framework moeten gaan schrijven die kan communiceren met een webserver die dmv bv (php of perl scripting) een database kunnen beheren voor je app.

Zelf heb ik geen ervaring met android maar wel met andere talen en het kost je wat werk maar als het er niet is (of niet voldoet) moet je toch wat...

Leuk leesvoer:
JSON http://mylifewithandroid....munication-with-json.html
XML http://www.runchog.com/android/19

Er zal ongetwijfeld veel meer te vinden zijn, maar kijk daar eens naar, dit scheelt je zelf een hoop werk!. Dan zal uiteindelijk je webserver (dus je scripting) de regels en uikomsten in je spel bepalen.

[ Voor 3% gewijzigd door EricBruggema op 01-11-2011 09:53 ]


Acties:
  • 0 Henk 'm!

  • NickThissen
  • Registratie: November 2007
  • Laatst online: 25-05 11:39
Ok, het begint me nu te dagen dat het webserver gedeelte helemaal niets met Android te maken hoeft te hebben. Welke richting moet ik dan op zoeken? Ik heb werkelijk geen idee hoe ik een webserver opzet waarmee ik kan communiceren (via bv JSON). Dat betekent dus ook dat ik zo'n webserver zal moeten kopen/huren, waarmee ik weer bij dezelfde vraag kom: kan ik dit op een standaard goedkope webserver die mijn website host doen, of heb je daar speciale webservers voor?

Daarnaast zie ik in je link over JSON (die ik zelf ook al had gevonden) dit staan;
In case you want to try it out on a real phone, you'd better deploy the server part on Google infrastructure.
Met een link naar hier. Dat komt op mij over alsof Google voor mij een webserver heeft als ik een app zou uploaden, klopt dat?

Mijn iRacing profiel


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 14:35

Janoz

Moderator Devschuur®

!litemod

Je server gedeelte heeft inderdaad helemaal niks met android te maken. Het enige wat overeen moet komen is de afspraak hoe data uitgewisseld wordt. Dat kan middels xml of json over http of zelfs via een compleet zelf bedacht formaatje (comma separated.. ik noem maar wat) over een socket.

Het enige dat je zelf vervolgens nog hoeft te doen is de android applicatie schrijven (in java of c++) die het door jou gekozen formaat ondersteund en een server implementatie maken die dat ook doet. Hoe je die server maakt maakt helemaal niet uit. Je hebt het zelf over een website account. Wanneer je daar php ondersteuning hebt dan kun je je server natuurlijk gewoon in php schrijven.

Gelijk een spel maken is trouwens best lastig. Dan krijg je een beetje het japanse scheikunde boek idee (werkt het niet doordat je de scheikunde niet snapt, of lees je het japans verkeerd). Waarschijnlijk kun je beter beginnen met een simpele chat applicatie. Op de server een php scriptje dat een regeltje aan de database toevoegd en een scriptje dat gewoon in plain text de laatste 20 regels uit de db haalt. Vervolgens een android applicatie die om de x seconden (of wat dan ook) het ene scriptje aanroept en de binnengekomen tekst in een schermpje print en een input box eronder die (met de druk op enter/een knop) de tekst naar het andere scriptje stuurt.
NickThissen schreef op dinsdag 01 november 2011 @ 10:22:
Met een link naar hier. Dat komt op mij over alsof Google voor mij een webserver heeft als ik een app zou uploaden, klopt dat?
Ja, bij google kun je webapplicaties deployen op de app engine. Dit is een soort cloud oplossing die voor kleine projectjes gratis is. Dit is een van de vele mogelijkheden voor het implementeren van een server. (GAE ondersteund op dit moment alleen java en python). De JSON techniek staat daar compleet los van.

[ Voor 19% gewijzigd door Janoz op 01-11-2011 10:48 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • NickThissen
  • Registratie: November 2007
  • Laatst online: 25-05 11:39
Ok, dat klinkt al langzaam wat beter. Ik ben niet bekend met php of python of whatever, maar ik ken wel .NET, dus ik zou een ASP.NET webservice kunnen gebruiken? Daar ben ik nu iets over aan het lezen en aan het uitproberen, en volgens mij (niet geprobeerd) kan ik zo'n webservice ook gewoon op mijn "website" hosten.

Uiteraard ga ik eerst een test projectje maken, inderdaad zoiets als een chat programma, zoals ik al zei probeer ik eerst alle onderdelen los van elkaar werkend te krijgen.

Ik ga eens aan de slag met ASP.NET, eens kijken wat ik daarmee kan :)

Mijn iRacing profiel


Acties:
  • 0 Henk 'm!

  • Jegorex
  • Registratie: April 2004
  • Laatst online: 11-05-2023
De meeste bedrijven die websites hosten accepteren alleen PHP, als je niet weet wat ze accepteren dan moet je ze even een email sturen of de website van het bedrijf bekijken.
Als je een eigen (windows) server hebt dan kun je wel .NET gebruiken, maar ik kan je verder niet helpen met hoe en wat.

Acties:
  • 0 Henk 'm!

  • NickThissen
  • Registratie: November 2007
  • Laatst online: 25-05 11:39
Ik gebruik gewoon ASP.NET op mijn website, dat ondersteunen ze zeker, en via de online chat heb ik net bevestigd dat ze ook ASP.NET Webservices ondersteunen, het wil alleen nog niet zo lukken, maar dat komt wel :p

Mijn iRacing profiel


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 14:35

Janoz

Moderator Devschuur®

!litemod

Nou, dan lijkt het me duidelijk. Gewoon de server implementeren in ASP.NET. Bedenk wel dat je niet perse een enorme kerstboom aan webservices op hoeft te tuigen. Zolang je de data die je op je gegenereerde pagina krijgt maar goed kunt interpreteren in je android app.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1