Skip to main content

DevBlog #31 - Game

     We are back!!!

    After several months of not wanting anything to do with my game due to the sudden and unfortunate realization that I would have to restart everything, and also have to figure out how networking worked, I am back! I have done a lot of thinking, a lot of school, and a lot of everyday life things, but now I am back, and I have made some progress that I am wanting to share.

    First things first, Steam Multiplayer...

    Multiplayer is a very difficult thing to do for Unity, even more so on a very small budget ($0), and a very small amount of networking knowledge. In total, I have probably watched somewhere around 100-200 hours of networking tutorials for Unity, and I have only just scratched the surface of what I need to know and do. However, that does not mean that I have not made some progress, because I have. I just completed the most basic implementation of Steam matchmaking/multiplayer/lobby systems in the world. You can either create or join a lobby. If you create a lobby you are given a lobby ID (which you can share), and then you can start the game. To join, you add said given ID to the main menu, and then you are added to their lobby. The current network architecture that I am using is a peer-to-peer system where the person hosting the server is also a client on that server. This means I do not need to host a fleet of servers in the cloud for a crazy amount of money, and I have also found a way for multiplayer to scale. Normally quality multiplayer games try to stay away from this model due to concerns over latency, and power, but this works well with my game since it is a turn-based strategy game and not a graphics-heavy FPS. 

    Unfortunately, I now have no idea what to do. I am going to have to essentially rewrite all of my code to allow for both single and multiplayer systems. Additionally, I am going to need to make it so that the clients can talk to each other (not chat or voice, but metadata). Furthermore, I have to figure out how to make it so that cheating can't occur, and fix other network considerations such as: what happens if the host leaves? What happens if one of the players leaves? so on and so forth.

    I will get to this down the road as I learn more and more about networking and how to best do it for gaming. Right now though, I will share the specs.

    I am using Fish-Net as my networking solution paired with Steamworks Steam Haven and Fishysteamworks. This allows me to use Steam as a relay system to allow for secure and protected peer-to-peer multiplayer systems. I will need to create some sort of matching system based on rank and location, but that is for another day. I have also decided to stick with Unity and not move to another game engine like Godot, Unreal, or a custom even with the recent pricing drama. This is mainly due to me wanting to complete this project, and not wanting to have to go learn something new all over again.

    This is all for now, I will try to keep working more on this project, but network/multiplayer development is frustrating and very irritating. However, I will do my best to write at least one blog article a week until this is done.

    Thank you for your time, bye!

Comments

Popular posts from this blog

DevBlog #4 - Fintech Platform

Progress Update (Life): 1) Just a quick update, nailed my forensics test (Monday) with a 93%. 2) Nailed my Calc exam (Applications of Derivatives: 92%, Function Analysis: 82%) 3) I have my AP Macroeconomics tomorrow with AP Psych right after that. 4) Next week I have finals for AP Mirco, AP Calc, AP Psych, AP Computer Science A, Forensics, and Langauge Arts. 5) What this means is that progress updates are going to be taking place at irregular intervals until everything settles, so sorry in advance. Progress Updates (Fintech Platform): 1) I have the connection to MongoDB established and have data being added to the DB from the signup forms. Data is taken from the forms, encrypted, and then sent to the database for storage. At the moment only the password is encrypted but I might change that. This means that I can begin moving to the next thing. At least once I fix a small little bug. Currently, it goes to a test DB and not the DB for this current project. I am going to have to figure ou...

DevBlog #23 - Game

      Today, a lot of cool things happened that have a drastic effect on the game and its systems. You can now add several effects to a single card. Each effect has their own duration, amount, type, requirements, etc. All one incredible system. This required me to rewrite a bunch of the cardEffectController script but was worth it. I now also have cities seeing and recognizing their effects and the buildings effects on them too. In addition to this, I also added the population growth system and the population feeding system. This allows the cities to grow and prosper.     I have added some more cards, and have been adding in all of the effects that the cards have on the world.      Pretty neat stuff.      I am going away to camp for 3 weeks so I don't know if I will be able to post or even work on it, but I will do my best to keep you updated on the game and on any changes as they come.     Thank you so much, bye...

DevBlog #19 - Game

      Today, I made a huge amount of visual progress. However this visual progress was easy to implement, so very little back end progress, as I had built it in a way to easily implement this new feature.     I have made building possible. I have also made all of the buildings and their effects happen in the game. It is response, and works very well in the MVP demo. However, I am going to change how it looks from a system where you drop the card and then your done, to a system pops up and allows you to build it. This system will show you a green, transparent, ghost game object for you to place, then once it has been placed it will turn int the real thing. You will also be able to drag and drop from the UI bar at the bottom the buildings that you an construct from the card you have chosen. This will look really intuitive and pretty, but will be simple and easy to implement.     This is a pretty big day as now I can actually do things on the...