Extension: 39js (Socket.io)
#1
Posted 27 September 2011 - 04:56 PM
39js is a javascript implementation of the 39dll for GMhtml5. The overall aim is to allow current Game maker games based on 39dll the ability to convert to Html5 with minimal (if any) code changes. Currently 39js is still in a very early alpha stage but includes most of the functionality needed to make multiplayer html5 games in Game Maker. It uses Socket.io to support the widest possible range of browsers and devices (tested and working on iphone and most major Browsers).
Example (if my computer is on):
http://amorri40.github.com/39js/examplegame/
The example is made by Revel from this topic: http://gmc.yoyogames...howtopic=332957 the client gmk was simply imported into gmhtml5 and runs just like it would with 39dll, but the server was slightly changed and made into a javascript file running on nodeJs.
Download from Github:
https://github.com/amorri40/39js
At the moment i'm currently investigating alternative ways of developing the server in Game Maker rather than rewriting slightly for Javascript. Only the basic functions have been implemented so far, the rest of the functions will be implemented when the server can be developed in GM with minimal changes from the original example.
You can download the client example in the github (import in gmhtml5) and you can run the server by running the bat file in the server folder. The API is the same as 39dll (or will be when the rest are implemented).
Let me know if you need any help
#2
Posted 27 September 2011 - 05:15 PM
Anyways, great work so far, looking forward to updates
#3
Posted 27 September 2011 - 05:29 PM
I'll check this thread regulary
#4
Posted 27 September 2011 - 05:57 PM
#5
Posted 27 September 2011 - 11:19 PM
Also, the example you're using is somewhat...average. It doesn't even check to see if the connection was successful. If you'd like to work with something more established, the Basic Network example I made a while ago might be better: http://bit.ly/oRbCNa
Additionally, the way you've setup the server is quite strange. Personally I'm thinking using PHP with a MySQL database as the back-end is a more logical way to go...perhaps it's time the GMC outgrew 39dll a little
#6
Posted 27 September 2011 - 11:27 PM
Additionally, the way you've setup the server is quite strange. Personally I'm thinking using PHP with a MySQL database as the back-end is a more logical way to go...perhaps it's time the GMC outgrew 39dll a little
That is probably too slow for real-time games, no?
#7
Posted 28 September 2011 - 01:31 AM
If you organize the structure well enough, it becomes irrelevant if it's a real-time game or not
#8
Posted 28 September 2011 - 02:06 AM
However, the trick is to make the game fake while it waits.
#9
Posted 28 September 2011 - 02:08 AM
#10
Posted 28 September 2011 - 02:16 AM
The difference in connection type means an HTTP request is quite a bit slower than a socket connection.
However, the trick is to make the game fake while it waits.
I was thinking about this too when I wrote that. But PHP supports sockets.
#11
Posted 28 September 2011 - 02:48 AM
@True Valhalla : Sorry I switched off nodeJS for a while. I don't currently have a server/vps that i can let nodeJS run so it will be off at times.
It was just a very simple example which was supposed to look like this if my server was up:
The players weren't being destroyed as the game end event doesn't seem to work
Any chance I could distribute your basic networking example with 39js? It looks great
I setup the server in a strange way or a number of reasons, but mainly I wanted to keep most of the original code from the server example, so most of the code is the same, I also prefer javascript to php and would like to be able to run gmhtml5 as servers in nodeJS (with a simulated browser environment).
Also the output from nodeJS would be very useful as i can't reproduce it (works on mac and windows for me).
Also about using a php server instead of nodeJS, there is a websocket library for php here: http://code.google.com/p/phpwebsocket/ which would be a good starting place.
@Seki what do you mean by native app? If you need any help give me a shout
#12
Posted 28 September 2011 - 02:58 AM
node.js:208
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Cannot find module 'socket.io-client'
at Function._resolveFilename (module.js:327:11)
at Function._load (module.js:272:25)
at Module.require (module.js:350:17)
at require (module.js:361:17)
at Module._compile (module.js:425:26)
at Object..js (module.js:443:10)
at Module.load (module.js:344:31)
at Function._load (module.js:303:12)
at Module.require (module.js:350:17)
Edited by Barling, 28 September 2011 - 03:00 AM.
#13
Posted 28 September 2011 - 03:02 AM
Any chance I could distribute your basic networking example with 39js? It looks great
Absolutely, feel free to. Please leave as much of the original code and comments in place though.
#14
Posted 28 September 2011 - 03:03 AM
#15
Posted 28 September 2011 - 03:20 AM
The difference in connection type means an HTTP request is quite a bit slower than a socket connection.
As I understand it, the point of WebSockets (and by extension Node.js with Socket.io) is that an HTTP request is required only to establish the connection. After that the connection is held open and data flows without the need for futher HTTP requests. If it is working correctly, it should be just as fast as any other netcode. I've read of latency as low as 10ms using Node.js and Socket.io. That should be adequate for anything.
#16
Posted 28 September 2011 - 03:51 AM
That sounds very promising, I can't wait to try out games made with this (and GM). I don't really have motivation to make my own MMORPG though.As I understand it, the point of WebSockets (and by extension Node.js with Socket.io) is that an HTTP request is required only to establish the connection. After that the connection is held open and data flows without the need for futher HTTP requests. If it is working correctly, it should be just as fast as any other netcode. I've read of latency as low as 10ms using Node.js and Socket.io. That should be adequate for anything.
#17
Posted 28 September 2011 - 04:08 AM
#18
Posted 28 September 2011 - 04:24 AM
#19
Posted 28 September 2011 - 05:28 AM
is something supposed to happen when I connect to the server? because my HTML5 game just shows a grey screen after I register/login.
#20
Posted 28 September 2011 - 05:39 AM
Yes its supposed to say you have logged in, try again and check your javascript console (on chrome its view->Developer->Developer tools) it should say what is wrong.
You could test out my example to see what its supposed to do.
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users












