Ik ben samen met een team van ontwikkelaars bezig met het schrijven van een stabiele Game Server voor verscheidene MMORPG, het gaat hier niet om een emulator maar om een server!
Om dit zo goed mogelijk te realiseren hebben we gekozen om Server Side Scripting (SSS) te gaan gebruiken, zo kunnen we de core applicatie closed source houden en de rest opensource maken. De core houd zich bezig met het decoderen en zenden van packet's als tevens een aantal andere dingen die voor elke game nodig zijn.
We wouden als SSS gaan gebruik maken van PHP, omdat dit veel overeenkomsten heeft met c++, makkelijk te leren is en zeer goed gedocumenteerd.
Het is de bedoeling dat de core de packet's decodeert (oppcode, packetdata, ect), hierna controleert deze of er ook een functie in de SSS Cache is met deze naam. Een voorbeeldje ter verduidelijking:
De core laat tijdens de start up procedure alle php files in het geheugen daarna bouwt deze een index waarin all functies staan en de core checkt dus bij elk ontvangen oppcode of er ook een functie is met deze naam (in PHP).
De server ontvangt nu OPP_ATTACK, deze functie bestaat.
Bij een return van 1 is de operatie geslaagd, en bij een return van 0 gefaald.
De server voert deze functie uit en print bij 0 failed en 1 succes in de console van de server.
Het idee is dus heel simpel maar het is ons niet gelukt dit toe te passen aangezien we geen idee hebben hoe we dit kunnen realiseren. Alle hulp en tips zijn dus van harte welkom!
Ik heb het geprobeerd zo duidelijk mogelijk uit te leggen, maar mocht er iets onduidelijk zijn post maar !
Om dit zo goed mogelijk te realiseren hebben we gekozen om Server Side Scripting (SSS) te gaan gebruiken, zo kunnen we de core applicatie closed source houden en de rest opensource maken. De core houd zich bezig met het decoderen en zenden van packet's als tevens een aantal andere dingen die voor elke game nodig zijn.
We wouden als SSS gaan gebruik maken van PHP, omdat dit veel overeenkomsten heeft met c++, makkelijk te leren is en zeer goed gedocumenteerd.
Het is de bedoeling dat de core de packet's decodeert (oppcode, packetdata, ect), hierna controleert deze of er ook een functie in de SSS Cache is met deze naam. Een voorbeeldje ter verduidelijking:
De core laat tijdens de start up procedure alle php files in het geheugen daarna bouwt deze een index waarin all functies staan en de core checkt dus bij elk ontvangen oppcode of er ook een functie is met deze naam (in PHP).
De server ontvangt nu OPP_ATTACK, deze functie bestaat.
De functie sendpacket is een alias voor de functie SendPacket in de core (C++).OPP_ATTACK_1($data)
{
if($data = 0) return 0;
if($data = DX560)
{
sendpacket('OPP_ATTACK DX402')
return 1;
}
elsev
{
return 0;
}
}
Bij een return van 1 is de operatie geslaagd, en bij een return van 0 gefaald.
De server voert deze functie uit en print bij 0 failed en 1 succes in de console van de server.
Het idee is dus heel simpel maar het is ons niet gelukt dit toe te passen aangezien we geen idee hebben hoe we dit kunnen realiseren. Alle hulp en tips zijn dus van harte welkom!
Ik heb het geprobeerd zo duidelijk mogelijk uit te leggen, maar mocht er iets onduidelijk zijn post maar !
http://www.tweakers.net/gallery/119170/sys