devbydusk Posted December 16, 2019 Share Posted December 16, 2019 Summary As a lover of role-playing and character building, I've set on a journey to build a RPG that runs right in the browser. Of course, browser multiplayer games inherently have their own difficulties, especially ones with complex game mechanics. My goal is to build a game that I'd want to play. This game is a 2d turn-based RPG inspired by games I've enjoyed playing in the past. Technologies Client: After re-writing the client side of the game several times, I finally stumbled across Phaser. Phaser (specifically Phaser 3) has given me the tools needed to design and create something that will hopefully scratch this itch. Server: Microsoft's SignalR enables me to do real-time client-server communication and supports polling ("streaming") of data in both directions. Maps: Maps are created using Tiled, and then exported into json. I serialize these into map objects, and then serve them up to phaser to consume and render. Persistence: MongoDB - although I'm not currently saving any data since the game is rapidly changing. Current Features: Most of my time has been spent creating the inventory, equipment, and item socketing system. There are 11 possible item slots that can be equipped. Items may contain sockets, which will allow you to equip "Insignias". An Insignia can contain anything - it may contain a skill that you can use in battle, it may contain a strength buff, or it may contain a passive ability (i.e healing after each turn). The UI is still a work in progress. I have hacked together a simple interface using photoshop that allows be to build out all of this functionality. In the first screenshot, you'll see the socket editing screen. The sword has two sockets, and two insignias equipped. In the second screenshot, you see that the sword is equipped, and the two insignias appear in the skillbar at the bottom. It just so happens these particular insignias granted the player a skill. All game data is defined in XML files and deserialized into game objects. Eventually, this data will be saved in the database rather than deserialized on load. Things like loot drops, experience gains, are already implemented in the game as well. However, I'm having to re-write the battle system in the client in Phaser so I'm not able to show that at the moment. The nice thing about having an API is that I don't have to change the server-side code at all. The chat allows simple communication between clients, as well as commands (for admins only). For example, I can type /startBattle <enemyId> and initiate a battle. This will obviously not be in the real game, but it's great for testing. Eventually I will add multiple channels to the chat feature, I.e guild, party, private, etc. In Progress: I'm currently working on the battle system. Once battle is initiated, whatever skills/items you have equipped on your action bar is what you may use in battle. This could be skills, items, etc. From there the battle is turned based, requiring the player to strategically pick which skills/items to use to get the best advantage. All skills/items require a certain number of action points to use. The catch? You don't start with a full action meter. Each turn you gain action points, allowing you to use more powerful skills/items. However, if you use up all your action points that might leave you vulnerable while you wait for them to recover. So choose wisely! Planned: Quests Companions I currently have the source code on github, although it's set to private. If this is something someone is interested in seeing or contributing too, I can be open to that. - DevByDusk 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.