beste,
Ik doe hier een aanvraag voor informatie/tips/tutorials. Ik zoek al een tijd op het internet naar informatie over hoe je een php game engine maakt.
Het gaat me dan voornamelijk om het laten lopen van verschillende poppetjes in een kleine wereld. In 2D.
Ik heb op het internet 1 engine gevonden maar die voldoet niet volledig aan mijn wensen met alles wat er om heen zit, daarom wil ik het ook zelf maken.
http://www.nowhere-else.org/engine/ Deze werkt met php/ajax.
Hebben jullie miscchien nog ergens tutorials liggen? Of andere informatie over hoe je zo iets maakt?
graag hoor ik van jullie.
- Hulp nodig bij maken game engine mbv scripttalen
-
28-07-2007, 10:43 #1
- Berichten
- 854
- Lid sinds
- 18 Jaar
Hulp nodig bij maken game engine mbv scripttalen
-
28-07-2007, 18:52 #2Particulier
- Berichten
- 155
- Lid sinds
- 17 Jaar
Ik denk dat je het niet zozeer moet gooien op enkel een PHP game engine maar gewoon game engines in hun algemeen. Teken uit hoe je het wilt hebben (op papier) en zet dit om naar php.
Ik heb hier wel een heleboel boeken over design patterns in games, etc etc etc (ivm studie) maar er zijn geen specifieke tutorials voor te krijgen gok ik zo... niet voor php in ieder geval.
Ik kan je enkel aanraden om gewoon goed uit te denken wat je wilt hebben en dit vervolgens om te schrijven...
Mannetjes in 2d bijvoorbeeld is niet zo lastig:
Met ajax geef je de informatie terug voor ieder poppetje op welke positie met welk plaatje.
Met javascript teken je de plaatjes.
Als je de positie van je eigen mannetje wilt updaten stuur je dit tevens door met ajax.
Op die manier heb je al snel een 'engine' in elkaar gezet denk ik...
-
28-07-2007, 19:06 #3Joris Willemsen Guest
Hier een tip:
Bedenk eerst alle functies en maak de tabellen aan, ga daarna pas scripten!
-
28-07-2007, 19:31 #4Particulier
- Berichten
- 155
- Lid sinds
- 17 Jaar
Origineel gepost door J. WillemsenHier een tip:
Bedenk eerst alle functies en maak de tabellen aan, ga daarna pas scripten!
1 - Begin eerst met het designen van het Concept (met concept bedoel ik het 'spel') zonder dat je hier programma-technisch op in gaat. Houd echter wel rekening met je technische limitaties!
2 - Bedenk hoe je het technisch wil gaan implementeren, zet hier een ruwe lijn voor uit. Scheidt zaken van elkaar zoals input en weergave.
3 - Pak de 'ruwe lijn' er bij en ga het per onderdeel afhandelen.
En dan nu de allerbeste tip die je kunt krijgen:
- Koop een pak papier en een berg balpennen en potloden. START DRAWING!
Teken de relaties, schrijf de mogelijkheden per onderdeel op etc.
-
28-07-2007, 20:21 #5
- Berichten
- 1.331
- Lid sinds
- 18 Jaar
Waarom PHP? PHP is totaal niet geschikt voor dit soort dingen.. ik zou eerder richting Flash ( / Director) of een JAVA applet gaan denken.
Origineel gepost door Henk van LohuizenBeste,
Allemaal bedankt voor jullie informatie/opmerkingen zover.
Waarom PHP? omdat het momenteel de enigste scripttaal is die ik beheers. Flash wil ik liever niet gebruiken. Director klinkt leuk heb er vaker van gehoord maar heb er zelf totaal geen ervaring mee. Het zelfde geldt voor JAVA.
En ik heb al uitgezocht, en het moet mogelijk zijn om een simpel iets te maken gebasseerd op php, mysql en ajax.
Het enigste probleem is momenteel dat er nogal weinig goede tutorials over AJAX te vinden zijn. Daarom ben ik nu bezig alles even uit te tekenen op papier hoe het moet gaan werken. en welke taal ik overal voor ga gebruiken.
Met PHP zal het uiteraard gaan, maar zo gaat er zoveel met PHP. Het is er in ieder geval niet voor bedoeld ;)Laatst aangepast door Martijn Dwars : 28-07-2007 om 22:08
-
28-07-2007, 20:54 #6
- Berichten
- 854
- Lid sinds
- 18 Jaar
Beste,
Allemaal bedankt voor jullie informatie/opmerkingen zover.
Waarom PHP? omdat het momenteel de enigste scripttaal is die ik beheers. Flash wil ik liever niet gebruiken. Director klinkt leuk heb er vaker van gehoord maar heb er zelf totaal geen ervaring mee. Het zelfde geldt voor JAVA.
En ik heb al uitgezocht, en het moet mogelijk zijn om een simpel iets te maken gebasseerd op php, mysql en ajax.
Het enigste probleem is momenteel dat er nogal weinig goede tutorials over AJAX te vinden zijn. Daarom ben ik nu bezig alles even uit te tekenen op papier hoe het moet gaan werken. en welke taal ik overal voor ga gebruiken.
-
28-07-2007, 21:26 #7Particulier
- Berichten
- 155
- Lid sinds
- 17 Jaar
ikzelf gebruik altijd jQuery als ik iets met ajax moet doen, werkt makkelijk namelijk :)
Het is inderdaad ook mogelijk in php, ik denk dat je zoiets in een paar uur kan maken zelfs. Overigens zijn er daarentegen wel genoeg goede tutorials over AJAX te vinden hoor...
maar wat je waar voor gebruikt:
- display: html
- html creeeren: javascript
- communicatie met server: javascript (ajax)
- communicatie met client: php
- gegevens bijhouden: php + mysql
-
29-07-2007, 12:50 #8
- Berichten
- 854
- Lid sinds
- 18 Jaar
Het enige waar ik momenteel nog mee bezig ben is het nadenken over hoe ik gemakkelijk verschillende gebruikers tegelijkertijd in 1 scherm kan laten lopen en dat ze elkaar zien. Een multiplayer dus.
Ik heb al het een en ander gescript. Alleen toen kwam ik dus met het probleem van het aantal verbindingen naar de mysql server. Dit worden er namelijk te veel vooral als er een paar 100 spelers bezig zouden zijn.
Ik heb er over nagedacht om de locatie (x en y as) van de gebruiker in het plaatje en op te slaan in de mysql database. En die telkens weer uitlezen. En dan een nieuw plaatje generen. maar op deze manier krijg je een veelste hoge load voor de server. En ook veelste veel verbindgen naar de server zelf.
Daarom denk ik dat ik toch weer terug kom bij het gebruik van een flashbestand of director. Of zit ik hier helemaal naast? Of zou het bovenstaande idee toch niet zoveel load gebruiken?
-
29-07-2007, 13:36 #9Particulier
- Berichten
- 155
- Lid sinds
- 17 Jaar
ik stel voor dat je het zo doet:
je stelt in php in om mysql PERSISTENT connections te gebruiken, scheelt je iedere keer connecten naar de mysql_server = minder load = beter.
voor iedere actieve speler (actief is laatste 5 minuten) sla je op in de database:
<id: primary key>,<x: index>,<y: index>,<sessionid: index>
je maakt dan een javascript dat er voor zorgt dat de X en Y van je EIGEN poppetje worden doorgegeven. de server update dit dan in de database.
je maakt een javascript dat er voor zorgt dat alle poppetjes die zichtbaar zijn (binnen de grenzen van je scherm) opgehaald worden in array vorm (csv lijkt me het best, daar heeft de server het minste moeite mee).
je bouwt een javascript die:
- alle poppetjes van je scherm afhaalt
- de array uitleest,
- poppetjes plaatst aan de hand van de array
nu heb je al een manier om poppetjes op te halen en te laten zien. moet je nog iets bouwen waarmee je je eigen poppetje kan laten bewegen maar dat mag niet al te lastig zijn om te bedenken.
tevens kun je de z-index gebruiken als z-buffer waarbij je de Y waarde gebruikt om de diepte in te stellen
http://en.wikipedia.org/wiki/Z-buffering
-
29-07-2007, 13:43 #10
- Berichten
- 854
- Lid sinds
- 18 Jaar
Dat is pas informatie waar ik wat aan heb, harstikke bedankt marthijn. Ik ben trouwens gisteravond even bezig geweest met het een en ander in elkaar aan knutsellen. Momenteel heb ik iets heel simpels gemaakt.
http://www.criminalminds.eu/index.html
Zoals je kunt zien beweegt 1 stipje als je op de links, rechts, links, boven of onder klikt. Een heel simpel iets dat met GDlibery werkt en PHP/MySql. Maar dit voldoet niet echt aan mijn wensen. Maar het is toch een basis opzet waar het op een gegeven moment naar toe moet. Natuurlijk dan wel meer grafische natuurlijk. Maar dit is gewoon even uit proberen hoe het gaat om dingen te laten bewegen.
Wat je op de link ziet is eigenlijk al een soort van multyplayer, want als ik er een logininscherm aan zou maken zou iedereen met een ander poppetje kunnen spelen en zie je elkaars zijn bewegingen.
Maar de bedoeling is om dit met Ajax/Javascript etc te maken. Dus daar ga ik maandag eens mee bezig.
-
29-07-2007, 14:10 #11Particulier
- Berichten
- 155
- Lid sinds
- 17 Jaar
ik zou het niet met gdlibrary doen. waarom pak je niet gewoon een plaatje van dat grid en teken je daar die vierkantjes overheen in de browser zelf?
- scheelt cpu van je server
- scheelt het steeds downloaden van het plaatje -> bandbreedte
overigens: als je het top down wilt maken is z-buffering out of the question uiteraard ^_^
tevens zou je kunnen kijken naar het <canvas> element, nadeel is dat deze nog niet volledig supported is (eigen maar heel weinig zelfs nog, maar misschien iets voor in de toekomst)
wat ik zeker gescheiden zou houden is het inlezen van de data via ajax en het tekenen van het speelveld aan de hand van de geparste data.
waarom? mocht je besluiten het opeens anders te willen doen hoef je enkel je teken-routine aan te passen :)
-
29-07-2007, 14:43 #12
- Berichten
- 43
- Lid sinds
- 17 Jaar
je zou het ook met sessies kunnen doen. Dat ie om de 10 sesseis ofzo verbinding maakt met de SQL server. Maar dat het in de tussentijd tijdelijk in een sessie word opgeslagen..
-
29-07-2007, 14:57 #13Particulier
- Berichten
- 155
- Lid sinds
- 17 Jaar
dan heb je enkel je eigen positie up te date en niet die van je tegenstanders.
misschien is het een idee om een update interval te maken die er van uit gaat dat er maximaal 500 queries per seconde gedaan worden.
als je dus 1000 mensen online hebt updaten die dan elke 2 seconden...
soort van 'framerate limiter'
-
01-08-2007, 12:50 #14
- Berichten
- 854
- Lid sinds
- 18 Jaar
Beste,
Ik heb jullie informatie gebruikt en al het een en ander gemaakt. Zitten nog een paar foutjes in. Jammer genoeg heb ik niet genoeg tijd om het verder af te maken. Betalende klanten gaan voor eigen plezier :P
Ik denk dat ik aan het einde van de week even een voorbeeld online zet voor jullie. Kun je eens zien wat ik tot nu toe heb gemaakt. Ziet er wel leuk uit.
-
10-08-2007, 15:09 #15Particulier
- Berichten
- 155
- Lid sinds
- 17 Jaar
het canvas element wordt nog niet overal in gesupport.
voor een demo van wat ik er mee heb gedaan: http://www.nightware.nl/water/
klik op het canvas (het grote veld) voor een semi-realistische water simulatie.
Als je denkt: dit is traag!
Dat klopt :)
Ik heb hem in c++ op 300frames per seconde lopen maar javascript is hier gewoonweg niet geschikt voor :)
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic