JamesA Posted August 21, 2015 Share Posted August 21, 2015 Hello everyone, I want to keep this short, I am mainly making this post to seek encouragement to continue in the development of my game, I have an extremely hard time focusing on the game at this point and it is nearly 1 year in development (not daily of course). Server: Node.JS Long story short, I am developing an MMORPG which will be majorly based around PvP (Player vs. Player). The game plays a lot like Realm of the Mad God, which is a real-time click-to-shoot MMORPG. Included will be a lot of PvE (Player vs. Environment/Enemy), bosses, and skills such as Mining, Black Smithing and Enchanting. Items are randomly generated when they are dropped by enemies, allowing a near-infinite end-game, alongside with the infinite number of combinations of skillsets a player can have. Here are some screenshots. Please note that these graphics are placeholders. Warrior Abilities (incomplete): Items: Other features:-Multiplayer-Seemless map changing-NPC Pathfinding/Following-Equipping items (No equipment interface yet)-Ability projectiles, ability cooldowns-Ability key settings-Items/NPCs/Ability systems created to load externally for easy changing-All interfaces movable and re-sizable for user friendliness. To finish before pre-alpha testing:-Warrior, Rogue, and Wizard classes complete and balanced-Shop system for buying/selling-Equipment interface-More maps, monsters, items, and bosses (fun stuff)-New user registration with password recovery by email-Player trading (maybe)-May be forgetting something Have only tested with 1 other player online, but the gameplay seems to run smooth and combat isn't "laggy" for people even halfway across the world. Let me know what you think, what I should improve on, etc. Thank you very much for checking it out! If you're interested in checking out the game when it's ready to be played, send me your email or something in a PM! druphoria 1 Quote Link to comment Share on other sites More sharing options...
tomdanvers Posted August 21, 2015 Share Posted August 21, 2015 It looks amazing James! Keep up the good work When its ready for some testing post a link here! Quote Link to comment Share on other sites More sharing options...
JamesA Posted August 21, 2015 Author Share Posted August 21, 2015 Thanks for the kind words Tom! I'll surely post a link here (probably a new thread) when it's ready to be played! Quote Link to comment Share on other sites More sharing options...
druphoria Posted August 21, 2015 Share Posted August 21, 2015 This looks totally awesome! Are you procedurally generating the levels? Quote Link to comment Share on other sites More sharing options...
JamesA Posted August 21, 2015 Author Share Posted August 21, 2015 Thanks Druphoria! No, the levels are not currently procedural. The main reason for this is because I don't know how to do it without it requiring thousands of tile images to be drawn on the screen. However, because of that problem, I decided to drop the idea of "instanced areas" (areas that are unique to certain players and cannot be entered by others) that most MMO's are using today. Without areas being instanced, there is hardly a way to fit procedural generation into the game. I do however believe procedural generation would have a very positive effect on the replay-ability of the game, if you have any ideas feel free to throw them at me. My only other idea for procedural generation would be to compile small maps of many different types of rooms that fit the same theme, and fit those together upon generation. Though, the work needed to do this I believe would outweigh the effect it would have on the game.. My original idea did require procedural generation, though, so I don't really know where I'm going with dungeons at the moment. Quote Link to comment Share on other sites More sharing options...
druphoria Posted August 21, 2015 Share Posted August 21, 2015 So I haven't explored this idea enough to know how well it would work, but the simplest thing that comes to mind is just generating an array of the tiles, creating a tilemap JSON object, and passing it into the Phaser.Loader.tilemap method: http://phaser.io/docs/2.4.2/Phaser.Loader.html#tilemap You've probably noticed by this point that tilemap files are basically just JSON files where the data is an array (or a 2D array, I forget) where the array is populated by numbers that represent the tile index. From the looks of the API, it seems like you could just use your procedural level generation algorithm to create this array, generate the rest of the JSON which is basically just metadata about the tileset, and then just pass it into the tilemap method (via the "data" parameter). Quote Link to comment Share on other sites More sharing options...
JamesA Posted August 21, 2015 Author Share Posted August 21, 2015 Thanks for the info, it sounds like what I am trying to avoid though. That method requires drawing thousands of tile images, when normally they are large squares generated through Tiled and then ImageMagick. I doubt a phone (or many computers?) would like to keep up with all those images. I'm not an expert in this though, so I'm not sure if what I'm saying is completely correct. On my server, the map is an array but it is only used for collision. The actual map is drawn by drawing all the images in the map folder (25 images for my current map size I believe). Quote Link to comment Share on other sites More sharing options...
druphoria Posted August 21, 2015 Share Posted August 21, 2015 Tiled editor basically just generates a JSON file with an array like the one I described. It doesn't generate a new image file. Here's an example of a tilemap created with Tiled for my most recent game (also a real time multiplayer game, though it's not procedurally generated):https://github.com/ahung89/bomb-arena/blob/master/client/assets/levels/level_one.json Notice that each layer has a "data" array. The values in this array are just the indices of the tile. So in the example I pasted, the ground layer has tile 0 in the upper left hand corner, tile 128 next to it, etc. As for what tile 0 and tile 128 actually are, those are tiles found in the tileset image. Tile 0 would be the first tile found in the tileset, tile 128 would be the 128th, etc. Here's the tileset image that I used:https://github.com/ahung89/bomb-arena/blob/master/client/assets/tiles/tileset.png Your actual tileset is typically a single image file, so you don't have to worry about loading a ton of different image files. The JSON file contains metadata on the dimensions of each tile within the tileset so that phaser can just find the tile at the correct offset in the image, basically just like a spritesheet. If you procedurally generate the array and then put it into your own JSON object just like the ones generated by Tiled, it'll be the exact same performance-wise as if you created the tilemap in Tiled editor. If you're worried about the overall performance of tilemaps in general, then that's a different story altogether but I can tell you that there are plenty of games that use tilemaps and have no performance problems. Anyway, it seems like your game is getting along great as it is, but just wanted to elaborate on the suggestion I was making in case you decide to go down the procedural route in the future JamesA 1 Quote Link to comment Share on other sites More sharing options...
JamesA Posted August 22, 2015 Author Share Posted August 22, 2015 Ah, I see! Thank you very much for that insight. I may have to strongly reconsider procedural generation now. Still it would be a decent sized task to complete before my alpha stage. Quote Link to comment Share on other sites More sharing options...
NateTheGreatt Posted September 22, 2015 Share Posted September 22, 2015 Interesting! I am currently working on something very similar. Have you done any preliminary stress tests on your Node server yet? I'm curious to know how your combat works on the server-side, and how much of a toll collisions would take on the CPU with large amounts of players. I have found that this is the true struggle of developing a Node.js MMO server, because without stress testing all of your server-side logic against a large number of "dummy" players (many instances of scripts that spam player inputs to the server) it's easy to code something inefficiently without noticing. The maximum number of active players per CPU thread can quickly decrease as you flesh out combat mechanics. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.