It's been a while

Hi, it’s been a while. I left this community over a year ago so I’m not sure what is being developed anymore. However, I had some time over break to continue working on a browser-based multiplayer game that I had posted about. I don’t have any concrete plans for this yet, beyond prototyping, but I figured I’d share it here on the off-chance that I’d need some help with development or as something of a preface to a massive file dump on git for anyone to experiment with. I will be posting a demo link in the next week or so.

I’m posting this in a bit of a rush now so I’ll briefly lay out some of the current mechanics below and edit this later for further detail. Not every feature is depicted in the video. A quick note on multiplayer: I’ve managed to create a relatively consistent real-time multiplayer experience using websockets, however, you might notice that other connected players will occasionally freeze in place due to TCP ordering guarantees.

Current mechanics:
• Basic multiplayer with an authoritative server
• Asset preloader (tilemap, tileset, images, sprites)
• Sprite interpreter
• Tilemaps rendered by JSON and created/imported from Tiled with layers (above, walls, ground)
• Collision-detection system
• Timers and cooldowns
• Player state machine (idle, walk, sit, shoot, punch)
• Basic gun and bullet mechanics
• HP and bullet-amount indicators
• Teleportation / Level changer

In Progress:
• NPC interactions
• Chat system (will be pushed to the right on the interface, as I realize that it’s a bit inconvenient to have
it lay under the game screen).

Also, if any of you would like to create levels with these tiles, I would be happy to share the tileset I’ve created and the corresponding attribution files. All sourced from opengameart.org.

Edit: From what I gathered from some of the other threads posted within the last few months here with regards to the end of GR and etc., I just wanted to point out that I enjoy the development process, have some time to spare, and do not intend on turning this into much more than what it looks like.

1 Like

Shit man, that looks nice!

How/in what language did you program the server?

I am a professional Developer (and used to be NAT Admin on UN) for years. I might be interested in lending a hand if I can find some time for that.

1 Like

Cool good job

1 Like

I’m opening it up to the community as an API. I decided that the project would work best this way as it gives anyone, at any level of experience, the opportunity to help develop the game in a variety of ways such as creating levels to expand the world, coding NPCs and other game objects, general prototyping and testing, etc. I will release a package with the following file hierarchy in the coming weeks:

assets/
— sprites/
— — heads/
— — bodies/
— — tilesets/

scripts/
— script.js
levels/
— level.tmx
— level.json
index.html
config.txt

Upon request, I will also set up servers and generate keys for developers to test their work online, and manage their own servers. I haven’t completely flushed this all out yet, but this would be a rudimentary example of code in game.js:

   function onCreate() {
         let server = new Server('SERVER-KEY'); 
         
         let npc1 = new NPC('barman', 'barman.png', 'Hello Traveler!', 100, 120);
         let npc2 = new NPC('sign', 'sign.png', 'Welcome!', 50, 80);
         npc2.drawOverPlayer(); 

         let npc3 = this.findNPC('barman');
   } 

   function onUpdate() {
         // build your own pathfinding algorithm!
   }

Simple and straightforward. An onCreated() function that is invoked when the game engine finishes preloading the assets in the folder and onUpdate() for continuous render of the game state at 60 fps. The onUpdate() is where you would want to put any code to handle the movement of game objects (such as a pathfinding algorithm for an NPC).

To create custom levels, you would import the level.tmx file to Tiled and export your work as level.json or whatever you’d like to name your level (subject to the parameters in config.txt) to replace the default world.json file in the levels folder. Developers with a server key will also be granted permissions to write to a folder on my webserver to upload their levels and code via FTP.

1 Like

Hey man, whats the status? Any idea when you will be publishing your work?

Currently still working on the package. I think I could reasonably have a beta out with most of what I outlined in the last post by the end of this week.

To give you a quick update on the current status for now: I’ve successfully used the API to generate NPCs in the game (all done locally/offline) and added an onBoot() function to support preloading game assets. I’m now working on opening access to the player’s game object through the API so developers can manipulate it and build any algorithms that might require access to it (such as player collision-detection, player spawning, etc.). After that’s done, I’ll publish the package here.

Looks really cool, Rammy!