Toon posts:

Text based browsergame maken (oldskool)

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het is al lang mijn droom (lach niet) om een text based browser game te maken. Zoiets als Travian, Ogame, Utopia, etc. Nu weet ik eigenlijk nooit waar ik moet beginnen. Mijn doel is om hem eerst zo eenvoudig mogelijk te houden zodat hij ook goed op telefoons en brakke computers draait (en het ook makkelijker voor mij is). Ik hoef er geen geld mee te verdienen, het is puur een hobbyproject.

Het is wel een langetermijnplan hoor, ik heb mezelf 3 jaar gegeven om het te voltooien. Ik heb niet veel achtergrond in webdevelopment. Een tijd geleden ben ik via udemy bezig geweest met een cursus webdevelopment (deze: https://www.udemy.com/the-complete-web-developer-course-2). Deze heb ik ongeveer tot de helft afgemaakt. Verder heb ik op youtube tutorials gevonden om een text based browsergame te maken maar dat is info van 2014. Weet niet of dat uitmaakt overigens...

https://www.youtube.com/watch?v=dWzzRkxrTMA

Het lijkt me erg leuk om te horen van mensen die ervaring hebben met het bouwen van dit soort spellen en wat je achtergrond is en hoe je te werk bent gegaan!

Greetz,

MisterGrey.

[ Voor 0% gewijzigd door Verwijderd op 02-03-2018 16:52 . Reden: spelling ]

Beste antwoord (via Verwijderd op 11-03-2018 18:12)


Verwijderd

Leer Javascript. Prio 1.

Het vervelende is dat je ook dus server side de backend van een spel moet maken. Wil je de moeite naast Javascript nog een andere taal te leren? Wat dus meer tijd kost. Doe dat, maar je kan ook kiezen voor Javascript op de Server met NodeJS. Dus ik zou niet blindelings kiezen andere talen zoals PHP. (Kost netto veel meer tijd)

Voordeel is dat je dan simpel gezegd alleen maar Javascript hoeft te leren voor beide kanten. Daarnaast is je game text based. Als je ooit voor real-time data gaat is NodeJS ook heel gemakkelijk met WebSocket. (maar dit is niet eerst nodig i.v.m. text based.)

Ik zou dan gaan qua communicatie voor front en backend met REST dus HTTP requests op basis van JSON welke heel makkelijk te verwerken is in NodeJS omdat het javascript is. Immers JSON betekend Javascript Object Notation.

Dan zou ik dus REST Api's maken met ExpressJS (een HTTP framework/library) voor NodeJS waar veel informatie over is op het internet.

Daarnaast heb je nog rendering van je HTML. Doe je dat via de server via Express hoef je ook geen REST Api's echt te maken... (Misschien wel makkelijker voor in het begin).
Kun je gelijk gebruik maken van ES6 template string literals als template engine! Bovenop Express. Nice toch?
Maar omdat het een game is, is SPA(single page application) het mooist. Het is immers een game geen statische website.
Maar wil je het simpel houden, zou ik beginnen met server side rendering met expressJS. Voor een simpele text based game voldoende.

Wil je een Database? MongoDB werkt heel mooi samen weer met NodeJS beter als met andere backend talen. Dus ook daar weer een voordeeltje.

Maar het allerbelangrijkste! Leer moderne ES6 javascript. Geen jQuery dat vertroebelt je leerproces hoe de browser API werkt.

Ik baseer mijn antwoord op time to market en snelheid van het leren van relevante moderne technieken. En keuze waarbij je makkelijk naar technieken gaat zoals SPA en WebSockets omdat dat gewoon echt heerlijke werkt met NodeJS tegenover andere backend talen. En je kent al Javascript vanwege je frontend...

Voor games snap ik niet dat mensen PHP adviseren. Heel veel browser games en vooral multiplayer zijn gemaakt op basis van NodeJS met WebSockets. Of C++ met libuv (Wat weer de basis is van NodeJS)

En nog een voordeel. Besluit je je game uit te willen brengen voor desktop?(Windows/Linux en Mac?) Kan je dat doen als het gebaseerd is op NodeJS doormiddel van o.a. NW.js of Electron van Github.

[ Voor 13% gewijzigd door Verwijderd op 10-03-2018 12:39 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • P_Tingen
  • Registratie: Maart 2005
  • Laatst online: 06:23

P_Tingen

omdat het KAN

Ik ben ooit in een ver en grijs verleden wel eens bezig geweest met een volledig text-based adventure. Ik schreef dat toen in Progress 4GL, een database querytaal. Puur omdat het kon. Het project is uiteraard nooit afgemaakt, maar het was wel leuk om te doen. Vooral het uitdenken van de achterliggende structuur in het programma was leuk om te doen. In mijn geval was het een soort puzzeltocht door een doolhof heen. De plattegrond moest uiteraard in het programma zitten, maar mocht nog niet direct bekend zijn bij de speler.

Daarnaast moest ook via tekst ingegeven worden wat de speler wilde. Hierbij kwam een serieuze hoeveelheid tekst parsing kijken, wat me nog niet meeviel. Het moest mogelijk zijn om iets in te tikken als "pak de knuppel en sla de reus ermee" en het programma moest dat dan snappen. Ook contextuele zinnen moesten begrepen kunnen worden. Dus als het spel dan meldde "je bevindt je in de toren. Er is hier een zaklamp". Dan moest je als speler kunnen zeggen "pak het" en het programma moest dan snappen dat je de zaklamp bedoelde.

Zoals ik zei, erg leuk om te doen, maar uiteindelijk gestrand in goede bedoelingen....

Edit: die video is overigens deel 1 van een serie die uit 1 deel bestaat. De rest is kennelijk nooit gepost, dus verdoe je tijd er niet aan. Even zoeken op youtube leert dat er wel veel te vinden is. Mijn advies zou zijn om eens een stuk of wat te bekijken om te zien wat je wil gaan maken en in welke taal.

[ Voor 15% gewijzigd door P_Tingen op 02-03-2018 18:36 ]

... en gaat over tot de orde van de dag


Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Er zwerft hier op GoT ook n spelletje van n Tweaker en er is een topic over.
Gaat over Clickfarm.
Misschien dat hij/zij ook wat kan komen vertellen.

Heb ooit zelf ook wel eens met het idee gespeeld, en ik weet ook wel zeker dat ik het kan, maar er gaat me teveel tijd in zitten.

Om verder nog even inhoudelijk te reageren:
Hardware specs van de deelnemende clients hoef je je niet druk om te maken als je relatief kale HTML gebruikt. Javascript is soms wel eens een boosdoener (raspberrypi en dan wehkamp openen met z'n javascript image sliders, dat is waar zoiets fout gaat).

Verder is het gewoon zaak dat je een taal leert. PHP is heel toegankelijk en vergevingsgezind als je een code foutje maakt. Aan de andere kant zijn de resultaten dan vaak ook niet echt geniaal, maar het gaat niet altijd finaal op z'n bek.

Nu heeft PHP ook wel zn nadelen. Juist omdat het zo populair en toegankeljk is, is er ook heel veel slecht advies of slechte voorbeelden te vinden.
Maja je moet ergens beginnen dus ik zeg PHP.
En ga lekker op de tweakers IRC server hangen (chat dingetje), zet je code als opensource op github zodat iedereen mee kan kijken als je ergens tegenaan loopt. Dan kun je op IRC even de oude rotten vragen :-)

[ Voor 62% gewijzigd door McKaamos op 02-03-2018 19:24 ]

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor jullie advies mensen! De andere delen van mijn gepostte youtube-filmpje bevinden zich overigens op een ander kanaal. In totaal zijn er 13 delen.

Het moet trouwens wel een multiplayer-game worden, dus dan komt mysql ook om de hoek kijken denk ik voor databases?

En github is ook een goeie!

Greetz,

MisterGrey

Acties:
  • +2 Henk 'm!

  • MAX3400
  • Registratie: Mei 2003
  • Laatst online: 27-09 22:07

MAX3400

XBL: OctagonQontrol

Multiplayer hoeft niet specifiek in MySQL; afhankelijk welke interactie je verwacht, kan je bij wijze van spreken turven in een txt-bestand wie een aktie heeft gedaan. Of middels een cookie "blokkeren" wie iets mag doen.

Maar aan de andere kant; als 4000 "teams" een spel spepen, wil je idd een iets meer gereguleerde manier van zaken bijhouden en zou een database handig(er) zijn.

Mijn advertenties!!! | Mijn antwoorden zijn vaak niet snowflake-proof


Acties:
  • +2 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Wat @MAX3400 zegt. Voor multiplayer is een SQL gebaseerde database geen vereiste.
Gewoon iets turven in een tekstbestandje is ook een optie, of in een CSV (textbased excel sheet) dingen noteren.
Of data serializen, of in JSON format, of in XML, en wegschrijven naar tekstbestandjes.
De opties zijn eindeloos, al zijn er ook genoeg redenen waarom bepaalde dingen niet veel gedaan worden ;)

Afhankelijk van het aantal spelers en de aard van de requests die naar je opslag gestuurd worden, kan een relationele (SQL) database zelfs helemaal niet wenselijk zijn.
Dan zouden andere datastores zoals Elasticsearch of MongoDB een goede vervanger kunnen zijn. Die steken heel anders in elkaar en zijn in bepaalde soorten taken veel sneller dan een SQL gebaseerde database.

Hoe dan ook, het is een kwestie van uitproberen wat daar in het beste werkt, wat je bij een webhoster voor elkaar kan krijgen (of gewoon een VPS, dan heb je zelf de regie wat er geinstalleerd staat),wat voor jou handig werkt en wat handig is voor de spel-opzet. SQL is stokoud en dus ook heel bekend. Daar is dus wel makkelijker wat over te vinden.
Je kan er voor kiezen om jouw spel in een bepaalde technische werking te proppen, maar je kan er ook voor kiezen om je functionele opzet leidend te laten zijn in de keuze voor de vorm van opslag.

Begin eerst maar eens bij wat je het eerste nodig hebt. HTML, CSS, PHP, mogelijk wat Javascript en wat graphics (je zal allicht wat icoontjes willen gebruiken?).
Je kan altijd later nog dingen toevoegen, of desnoods from scratch opnieuw beginnen met de kennis die je hebt ontwikkeld.
Een spelletje is niet in één dag geboren en je kennis is niet in één poging direct op nivo. Hoeveel cursusjes je ook bekijkt op internet ;)

Plemp WAMP/XAMP op je PC, pak een fijne editor erbij en knallen maar.
Wat misschien nog wel belangrijker is, is dat je voor jezelf helder hebt wat je spelletje moet doen. Wat zijn de regels, wat is het doel, hoe werken interacties tussen spelers bij multiplayer, etc. Gewoon op functioneel nivo bekeken. Schrijf dat voor jezelf op zodat je dingen kan af vinken als je het hebt gebouwd.
En dan kan je ook bepalen wat een eerste releasebare versie is en wat er later als versie X bij moet gaan komen.

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

  • gitaarwerk
  • Registratie: Augustus 2001
  • Niet online

gitaarwerk

Plays piano,…

Leuk project. Ik wilde dit ook altijd doen, maar heb nog nooit de stap genomen. Ik ben benieuwd of je dit gaat open sourcen. Ik zou het graag willen volgen. Vind ook leuk om te zien hoe je vordert.

[ Voor 55% gewijzigd door gitaarwerk op 06-03-2018 16:25 ]

Ontwikkelaar van NPM library Gleamy


Acties:
  • Beste antwoord
  • +2 Henk 'm!

Verwijderd

Leer Javascript. Prio 1.

Het vervelende is dat je ook dus server side de backend van een spel moet maken. Wil je de moeite naast Javascript nog een andere taal te leren? Wat dus meer tijd kost. Doe dat, maar je kan ook kiezen voor Javascript op de Server met NodeJS. Dus ik zou niet blindelings kiezen andere talen zoals PHP. (Kost netto veel meer tijd)

Voordeel is dat je dan simpel gezegd alleen maar Javascript hoeft te leren voor beide kanten. Daarnaast is je game text based. Als je ooit voor real-time data gaat is NodeJS ook heel gemakkelijk met WebSocket. (maar dit is niet eerst nodig i.v.m. text based.)

Ik zou dan gaan qua communicatie voor front en backend met REST dus HTTP requests op basis van JSON welke heel makkelijk te verwerken is in NodeJS omdat het javascript is. Immers JSON betekend Javascript Object Notation.

Dan zou ik dus REST Api's maken met ExpressJS (een HTTP framework/library) voor NodeJS waar veel informatie over is op het internet.

Daarnaast heb je nog rendering van je HTML. Doe je dat via de server via Express hoef je ook geen REST Api's echt te maken... (Misschien wel makkelijker voor in het begin).
Kun je gelijk gebruik maken van ES6 template string literals als template engine! Bovenop Express. Nice toch?
Maar omdat het een game is, is SPA(single page application) het mooist. Het is immers een game geen statische website.
Maar wil je het simpel houden, zou ik beginnen met server side rendering met expressJS. Voor een simpele text based game voldoende.

Wil je een Database? MongoDB werkt heel mooi samen weer met NodeJS beter als met andere backend talen. Dus ook daar weer een voordeeltje.

Maar het allerbelangrijkste! Leer moderne ES6 javascript. Geen jQuery dat vertroebelt je leerproces hoe de browser API werkt.

Ik baseer mijn antwoord op time to market en snelheid van het leren van relevante moderne technieken. En keuze waarbij je makkelijk naar technieken gaat zoals SPA en WebSockets omdat dat gewoon echt heerlijke werkt met NodeJS tegenover andere backend talen. En je kent al Javascript vanwege je frontend...

Voor games snap ik niet dat mensen PHP adviseren. Heel veel browser games en vooral multiplayer zijn gemaakt op basis van NodeJS met WebSockets. Of C++ met libuv (Wat weer de basis is van NodeJS)

En nog een voordeel. Besluit je je game uit te willen brengen voor desktop?(Windows/Linux en Mac?) Kan je dat doen als het gebaseerd is op NodeJS doormiddel van o.a. NW.js of Electron van Github.

[ Voor 13% gewijzigd door Verwijderd op 10-03-2018 12:39 ]


Acties:
  • +1 Henk 'm!

  • Fontini
  • Registratie: Februari 2012
  • Laatst online: 06-10 17:10
Verwijderd schreef op zaterdag 10 maart 2018 @ 12:25:
Leer Javascript. Prio 1.

Het vervelende is dat je ook dus server side de backend van een spel moet maken. Wil je de moeite naast Javascript nog een andere taal te leren? Wat dus meer tijd kost. Doe dat, maar je kan ook kiezen voor Javascript op de Server met NodeJS. Dus ik zou niet blindelings kiezen andere talen zoals PHP. (Kost netto veel meer tijd)

Voordeel is dat je dan simpel gezegd alleen maar Javascript hoeft te leren voor beide kanten. Daarnaast is je game text based. Als je ooit voor real-time data gaat is NodeJS ook heel gemakkelijk met WebSocket. (maar dit is niet eerst nodig i.v.m. text based.)

Ik zou dan gaan qua communicatie voor front en backend met REST dus HTTP requests op basis van JSON welke heel makkelijk te verwerken is in NodeJS omdat het javascript is. Immers JSON betekend Javascript Object Notation.

Dan zou ik dus REST Api's maken met ExpressJS (een HTTP framework/library) voor NodeJS waar veel informatie over is op het internet.

Daarnaast heb je nog rendering van je HTML. Doe je dat via de server via Express hoef je ook geen REST Api's echt te maken... (Misschien wel makkelijker voor in het begin).
Kun je gelijk gebruik maken van ES6 template string literals als template engine! Bovenop Express. Nice toch?
Maar omdat het een game is, is SPA(single page application) het mooist. Het is immers een game geen statische website.
Maar wil je het simpel houden, zou ik beginnen met server side rendering met expressJS. Voor een simpele text based game voldoende.

Wil je een Database? MongoDB werkt heel mooi samen weer met NodeJS beter als met andere backend talen. Dus ook daar weer een voordeeltje.

Maar het allerbelangrijkste! Leer moderne ES6 javascript. Geen jQuery dat vertroebelt je leerproces hoe de browser API werkt.

Ik baseer mijn antwoord op time to market en snelheid van het leren van relevante moderne technieken. En keuze waarbij je makkelijk naar technieken gaat zoals SPA en WebSockets omdat dat gewoon echt heerlijke werkt met NodeJS tegenover andere backend talen. En je kent al Javascript vanwege je frontend...

Voor games snap ik niet dat mensen PHP adviseren. Heel veel browser games en vooral multiplayer zijn gemaakt op basis van NodeJS met WebSockets. Of C++ met libuv (Wat weer de basis is van NodeJS)

En nog een voordeel. Besluit je je game uit te willen brengen voor desktop?(Windows/Linux en Mac?) Kan je dat doen als het gebaseerd is op NodeJS doormiddel van o.a. NW.js of Electron van Github.
Ik zou ook absoluut aanraden om eerst basis javascript in combinatie met json uitlezen als eerste stap te nemen. Het antwoord van @Verwijderd is zeer uitgebreid en compleet maar zou een beginner misschien wat afschrikken :). De eerste stap is mijns inziens basis javascript en het uitlezen van json. Bouw van daaruit verder en hou @Verwijderd' antwoord ernaast :).

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wauw, bedankt voor jullie antwoorden! Ik had eigenlijk een beetje een hekel aan javascript maar blijkbaar toch de moeite waard! Thnx nogmaals!

Acties:
  • +3 Henk 'm!

  • DutchKel
  • Registratie: Mei 2002
  • Laatst online: 07-10 02:21
Verwijderd schreef op zondag 11 maart 2018 @ 18:13:
Wauw, bedankt voor jullie antwoorden! Ik had eigenlijk een beetje een hekel aan javascript maar blijkbaar toch de moeite waard! Thnx nogmaals!
Even als notitie: JavaScript is totaal iets anders als Java. :P

Ik weet niet waarom je een hekel hebt aan JavaScript, maar van Java kan ik het wel begrijpen.

Don't drive faster than your guardian angel can fly.


Acties:
  • +1 Henk 'm!

  • kaassouffle
  • Registratie: Januari 2002
  • Laatst online: 07-10 16:43

kaassouffle

Medewerker v/d Maand

Ik zag dat je ook op FOK! een topic had geopend ;)
Er staat daar 1 antwoord met niet al te veel context, maar ik vond het zelf best een handige link. De javascript (jQuery) is vrij helder en bevat veel comments. Wellicht handig om eens door te nemen: https://domscode.com/2013/05/07/1160/ (desnoods alleen voor de gebruikte opzet, functies, spelverloop etc.)

[ Voor 12% gewijzigd door kaassouffle op 11-03-2018 18:48 ]


Acties:
  • +1 Henk 'm!

Verwijderd

Wat leuke gratis links om Javascript te leren:

https://www.codecademy.com/ (als beginner)

javascript30.com (als middel ervaren, maakt hevig gebruik van ES6)

Referentie materiaal: https://developer.mozilla.org/bm/docs/Web/JavaScript

Daarnaast maakte ik ooit de fout om Javascript en de browser als 1 geheel te zien. Maar dat is niet zo.
Wat mij hielp is om de DOM(Document Object Model, ook wel je HTML document genoemd) te zien als een bibliotheek voor Javascript.

Zo heeft de browser allerlei verschillende "bibliotheken" in de browser welke je kan aanspreken. Niet alleen de DOM. Zo ook ook Audio API's voor als je geluid in je games wilt implementeren. Zie hier voorbeelden: https://www.html5rocks.com/en/tutorials/webaudio/intro/

NodeJS is eigenlijk Javascript zonder DOM en andere "Web" API's, maar wel met IO zoals toegang tot je OS wat in de browser niet kan. Het is en blijft een script taal, voor echte ruwe rekenkracht is het niet handig. Zoals overal in de wereld van programmeren. Er bestaat geen zilveren kogel.
Pagina: 1