4 ms·
Could you give me some advice on a related problem I have? I want to make a "game" which is more of a game environment sandbox. something kind of in-between g
by cupofpython 4y ago
Could you give me some advice on a related problem I have?
I want to make a "game" which is more of a game environment sandbox. something kind of in-between game engines and actual games. I want to be able to create the feel of different game types like FPS, RTS, top-down adventure, side scroller, whatever - within a certain set of consistencies of my choosing. Like something to toy with different ideas for game mechanics in different settings while not needing to explicitly manage things like what a wall or door is each time i change things (things that would be defined as part of me creating the "game"). I want to be able to invite a friend into test environments as well (so multiplayer needed). I am expecting to need to make edits to the game mechanics outside of the game, possibly even through adding extensions to whatever game engine i use - so i will not be looking to set up a UI for tweaking settings. Just something that makes it easy to make changes to how the game functions, easy to spin up a dedicated server to run an instance of the created game environment, easy for another person to join that environment.
Advice needed is: is this scope feasible for 1 person and what game engine should I look into for trying it out? I am not trying to do anything particularly fancy; no overall game design, no story, minimal amount of textures and assets. Literally just an environment to toy with game mechanics.
I understand there is so much below the surface of what I am trying to do that I dont understand, i.e. I have seen an example for all the decisions that need to be made about doors, how interactions work, size, how changes are managed (this door, or all doors?) etc.
Basically, I am not trying to send my friend a new .exe everytime I make a change to a game mechanic - since that's expected to happen a lot as the primary use-case for the thing. If I add assets, then yeah - although ive seen games have the ability to download assets when connecting to the server, so maybe not even that. Ideally, I'll have a fixed set of assets that cover everything of interest, and the way they are rendered and the multiplayer networking and all will be consistent throughout.
hopefully this all makes sense
- reidjs 4y agoThis is why I’m making an html5 game, they just go to the URL which is the most recent version of the game.
- cupofpython 4y agothis was my next step. webassembly? what engine are you using, and do you still need to code the multiplayer networking yourself?
- reidjs 4y agoI’m using phaser3, there’s a few html5 game engines though. I’m doing it pretty low budget, so I’m not using webassembly, peoples computers and phones are plenty fast now to just render sprites through browser. Multiplayer logic goes through firebase real-time database.
- andrewmcwatters 4y agoAt Planimeter, we're doing this internally with a game product called Planimeter Game Sandbox. Over a decade ago, under a different team name, we published an open source game called Half-Life 2: Sandbox. It was closer to a game than a game sandbox, which I would, like you, categorize as different than a game engine or a standalone game. But the idea is the same. We see that there is a market for developers who want to play with game software, they don't want to publish a full blown game. We do want to provide a hatch for them for when they want to graduate to creating a standalone product, and that's what Planimeter Game Engine 2D is for. So we provide abstractions like game modes, and the ability to send game mode code over to people connecting to a server who don't have it installed. And so that developers can work on the game mode as it is being played with friends, the game engine includes live reloadable assets and real-time scripting. Is this feasible for one person? I mostly built the game software over a decade with other volunteers from Planimeter. I suspect we don't have many products like this in this space because most game developers aren't successful in simultaneously creating their products with a very focused scope and marketing them through discussions like we're having here now. It's literally just a constant function of engineering labor and time spent on sites looking to help people out. It makes sense. It's what we've been trying to do for years. There are basically no products on the market that do what you and I are looking for, and my team has slowly been trying to build it up. We have some internal projects where we have spent time looking into other game engines besides our own to see if we could move faster on established products while minimizing risk, but the landscape is amazingly poor. For example, Unreal Engine doesn't have a fixed timestep, and its entire networking model since the late 90s, early-2000s was one based on the premise that connected clients are approximations. This is a hard departure from, say, the Quake-family of engines or engines that are designed similarly. Believe it or not, for reasons like this, Unity is probably more appropriate for games like first-person shooters as a result. Larger studios have to jump through significant hoops to get Unreal to behave properly in common FPS scenarios, which is a technical reason why players report poor "netcode" in Unreal Engine games. You can't create reliable replicable states in UE 4 or 5. While Unreal has some rudimentary networking out of the box, as far as we understand, Unity has issues with not providing multiplayer out of the box essentially at all? It's been some time since I've looked into it. Anyway, we expected more from the larger two institutions. Godot also doesn't provide multiplayer out of the box, you have to write it all yourself with some bare bones abstractions you are provided, but they barely built on enet itself. So ideally you and I would have access to a 2D or 3D engine that had multiplayer out of the box, could write game mode code that was networked to connecting clients even if they didn't have the game mode, and allow them to download assets they were missing as well. And while you were playing the game, had the ability to change the game code on the fly and send it to clients so you could develop and play test in real-time. It doesn't exist as far as we know. Garry's Mod, Half-Life 2: Sandbox, and Planimeter Game Engine 2D are the only products I'm aware of that allow you to do this, and two of them are Source Engine games/mods. I'm surprised it's considered a niche, but a lot of people seem to like the game engine with UI design thing over game software with robust multiplayer and live reloading. Worst yet, a lot of amateur game developers don't seem to think multiplayer is important, or they think games vary widely in networking implementation. They really don't. I hope more game software comes out with "game sandbox"-like features, because we didn't want to be the ones building it 11-12 years ago, but Planimeter and Facepunch seem to be the only orgs doing it. If you have found some other software like this, though, I'd love to hear about it.
- andrewmcwatters 4y ago> Advice needed is: is this scope feasible for 1 person and what game engine should I look into for trying it out? I am not trying to do anything particularly fancy; no overall game design, no story, minimal amount of textures and assets. Literally just an environment to toy with game mechanics. To answer your question more directly, we have not seen the engineering, design, and marketing skills required to do this widely available in the market, or open source space. We know of a small handful of people in the world who have the combined knowledge to do it, but none of them are working on such a product except for some of the engineers at Facepunch and Planimeter. One person can absolutely do it, but statistically we haven't seen it. It requires you to primarily have an exceptional background in general software development, game networking, embedding scripting languages, user-interface design, and marketing (if you actually want people to use your product/play with your software). The guys that I know of who have the skillset to do this are all working for studios.