(image of Unitys FPS game challenge only it’s not working on the Unity Forum?!)
This is great Unity is doing game jam challenges, but…
Wouldn’t nearly all of the micro starter games be so much better with Multiplayer?
For instance did you know that professional game developers often have multiplayer as a core early feature so the development team can play against each other. With one or more players driving the enemy AI allowing for more explorative gameplay during development.
And with the Unity AI toolkit could you even record the enemy player and train an AI to replicate the players enemy or the player from real PvP games, maybe?
No. If anything it would be worse because the entire purpose behind the micro starter games is to teach beginners the basics of Unity. A beginner has no business trying to do multiplayer.
Multiplayer done right is just serialising the data and adding a few networking components.
Also useful for allowing replays, saving game state and as I said exploring and developing your game by allowing players to play the enemies side.
Hopefully it will even be easier with DOTS as that’s all data stream based anyway so your system will get some of its data from the networked multiplayer buffer.
Everything you’ve listed here requires a level of knowledge beyond that of a beginner. I’m completely fine with them creating intermediate to advanced topics like networking but we shouldn’t be shoving it onto people who are not ready for it.
I’m absolutely positive that as soon as DOTS visual scripting is mature, most of the learning materials will switch to that. There is no sane business reason why they wouldn’t. At that far off point I’d imagine networking could be done simply.
OK So you can give beginners 3D transforms, Quaternions, 3D cameras, Skyboxes, Animations, Input Handlers, Controllers, Particle Systems, Music, Sfx, 3D Level Building Tools, Scene Management, UI, AI programming, Physics, Lighting, Occlusion Culling the Unity API and Editor, DOTS, C# programming…
But let’s draw the line at adding a networking component that allows them to multi-play the games they make?
I think one of the main reasons that networking is considered hard is because we don’t introduce it early enough, then when you build games without it you and try to jury rig it into a game it is a lot harder.
For me at least the hardest part was getting my head around this additional control layer that needed to exist within the games loop and logic. Now if nearly every game example had networking built in just learning the basics of game programming would be learning about where the networking layer fits and how it works.
Maybe if we bring Networking into the Introductory games it will make it’s adoption and addiction to games easier?
Yes, because the amount of testing you have to do when networking is a factor near doubles and it’s dramatically more difficult to hunt down the source of the problem. Networking relies on a lot of concepts that are far more complex than any of the other things you listed. It’s not just sending the data back and forth, it’s ensuring that connectivity functions at all. Is the multiplayer online? Cool, now we have to teach them about NAT punchthrough or make them rely on client-server architecture. Is the multiplayer realtime? Great, now they have to learn about packet loss, things like lock-step, rollback, movement prediction, sanity checks, all sorts of things.
You are dramatically understating the difficulty that comes with getting multiplayer to work while also claiming that things like skyboxes are somehow complex.
Just about everything in that list (you mentioned DOTS in the post I said contained nothing applicable to beginners so it’s not beginner material) can be dumbed down to a level that a beginner can understand. AI, for example, can be something as simple as an enemy that always follows the player.
Quaternions would have been a complex topic but the helper functions completely negate the difficulty. I don’t see anything in the learn section at a glance covering occlusion culling so I’m going to assume your love of buzzwords made you add it to the list.
Getting back to the original topic of this post, networking can’t be dumbed down to anywhere near the same degree as the other topics and it’s not just one topic but several combined. Like @Murgilod 's post mentions there are a ton of things you have to understand and deal with to make networking function and none of it is easy.
I can imagine a multiplayer game does this, but how would multiplayer specifically help improve either the player perspective or the eventual enemy AI, when the player perspective is entirely related to the enemy AI?
This Stanford Lecturer on making games addictive comments on how multiplayer games were used by Bullfrog/Lionhead games as part of the game development/co-evolution approach they took to making games.
OK imagine the development cycle of a game, developer makes level, tests level, adjusts and repeats. This cycle even with Unity WYSIWYG Editor takes time and can often become a multi-person/stage process.
Now if you add in multi-player then you can have the level designer playing the AI and watching what the player does. In addition having multi-player means you can capture what happens and replay it. So in effect you could record what the enemy player does and use that as your template for the levels AI.
Unity recently were showing off their multiplayer FPS sample and how it allows instant changes to levels even during the game. Imagine being able to dynamically play the enemy and set off waves of enemies to challenge the player with the aim of working out how to keep them in FLOW mode.
Then think how many cycles of build/playtest/adjust/repeat would be needed to find the FLOW spot for your game.
Multiplayer is “easy” only if it’s async, turn based with no time limit, and has an api lifting huge art of the job.
You are suggesting real time, oof , that make even competent dev sweat profusely (see the fighting game scene who only has 2 character to sync and a bunch of input)
You can’t ask a beginner who is just assembling a game with prefab, to jump immediately at a thing that takes 2 years of production to an experienced dev!
You say it happens often, yet the lecturer only mentioned one example from way back when, when multiplayer games couldn’t even exist due to bandwidth limitations and the game probably would have been multiplayer if it could have. An example of this ubiquitous practice from the last decade would be great. I’ll give you credit for linking an interesting talk though.
That said, I can see some advantages for testing with multiplayer in terms of understanding the level from the AI perspective and what the AI might do to exploit it. But that will only take you so far (not very far at a very high cost). The real problem is that most of what an AI does is not about being good at a level, but creating an experience for a player. Besides some fairly basic strategy, it’s more important for the AI to make the player ‘feel’ something than for it to be good at the job of killing the player or whatever. And that is an art that is best drawn from the players eye, and not from that of the enemy.
Can I just ask of the people saying networked multiplayer is too complex have you actually written a simple multiplayer game with Unity, e.g. using something like Photon Cloud, where you simply have to add some network components to your game elements and a lobby?
I wrote some multiplayer for my space combat kit. It’s not hard to get something that ‘works’ but there’s a reason why in Photon’s car race demo, a car lags like 20 metres behind the actual position, and it’s not even going very fast at all. Syncing position and rotation properly for objects that moved around at several hundred metres per second with very tight controls, required third derivative modelling of position (acceleration of acceleration) and then you still had the problem of smoothing out modelling mistakes without it looking weird. Not to mention decent hit detection, difference in lag, who gets to decide what really happened, reversing/updating an incorrect model of the game on a client etc.
Well, I suppose you can write something to ‘test’ your singleplayer game without too much trouble, it probably won’t hold up very well under pressure but maybe that’s not what you need it for. Personally, I think the advantages are pretty limited. I can’t say for sure though - it’s not that simple to differentiate between the value of realistic and fun enemy AI, I’m sure there’s some overlap somewhere but … tell me, have you ever watched a Call of Duty multiplayer video, with all the different players skating around like mice and popping up out of nowhere, and asked yourself if there would be something intrinsically fun about playing against a bot that does the same thing when you know it’s not even another human being? Compared to an AI that gives you the pleasure of conforming to your heroic sense of superiority in words and actions?
@Arowx show us your very first published game, when you were beginner, as this is thread you target your questions at. How many years did you spent learning programming prior? Was it multiplayer (yes, or no) and why? Was it popular?