Jump to content

White House urges developers to avoid C and C++, use 'memory-safe' programming languages

DuckDodgers
16 minutes ago, hishnash said:

It all depends on what you need, if your just making an engine to support a single game and you can scope that engine to just what you need for the game it does not need to be that large or complex and engine, and you might well end up spending more time coding tooling around the engine that help you create the game (stuff that does not run on the users machines) than the engine itself.   

if you want to create a generic engine and the tooling to help you build a generic game then that is a massive project. 

Square Enix is literal proof of otherwise. Every game in the PS1 and PS2 era had a engine made for the game, they tried to carry this on in to the PS3 era with MASSIVE problems, seriously massive, and due to that eventually moved to Unreal Engine.

 

Final Fantasy 15 (formally Final Fantasy Versus XIII) only exists at all as it is due to the engine issues they had to deal with because of persisting with doing their own. And I as a massive Final Fantasy/Square Enix supporter still support the idea of doing your own game engines like they were but I'm neither blind to the problems.

 

If you are doing something really small scale then yea maybe making your own might make sense, large tens to hundreds of millions of dollar games no way. You'd also be battling prospective employees knowing a tool, i.e. UE, but then not utilizing that knowledge because you wanted to do your own thing.

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, leadeater said:

Generally I think a lot of people have misconceptions about what a game engine is and with a lot of games being very similar also using the same game engine reinforces that, erroneously. You'd think Unreal Engine for a good while there was only suitable for and dedicated to FPS games or "open world FPS like games". But really you could make a chess game with it.

 

It's a little foolish to dedicate so much resources in to making a game engine, a tool to make games, to be only suitable to make one or a few limit games. The only company I know of that did that consistently for actual decades was Squaresoft/Square Enix and they have "recently" given those endeavors up.

Unreal started as one thing and has become more general over time, however the more general a game engine becomes, the harder it is to protect it's internals because it's internals are already known and cheats for Unreal games work on all of them, because, again the game engine is designed foremost as a single player experience. 

 

Every MMO built upon Unreal Engine, builds their own netcode, but the servers can just be running the same client data as well in a "Server" mode. That's why you don't typically see "MMO" games on Unreal, just small maps and small amounts of players (and yes 100 players on one map is small.)

 

What people don't tend to realize is that before UE5, games used rooms scaled to the models size. So the higher the detail the "world" the smaller and smaller the maps got. The City (Matrix) demo is impressive to see, but you also quickly see all the holes in how it works, as you can't go inside the buildings, they're not destructable, and so forth. It's simply a "set dressing" demo.

 

Link to comment
Share on other sites

Link to post
Share on other sites

On 3/1/2024 at 11:23 AM, starsmine said:

Unreal is a single player game.
Unreal engine was built for Unreal

Unreal Tournament came after.

Then Unreal was redeveloped with the UE tournament version of Unreal Engine.

 

While I’m technically wrong it’s also misleading to state that UE is a single-player engine

CPU - Ryzen 7 3700X | RAM - 64 GB DDR4 3200MHz | GPU - Nvidia GTX 1660 ti | MOBO -  MSI B550 Gaming Plus

Link to comment
Share on other sites

Link to post
Share on other sites

7 minutes ago, PocketNerd said:

Then Unreal was redeveloped with the UE tournament version of Unreal Engine.

 

While I’m technically wrong it’s also misleading to state that UE is a single-player engine

Let's make this easier, because not all Multiplayer is equal.

 

If a game engine does not require a server to operate, it's a single-player game engine. If games can peer-to-peer host, that is still a single player game engine because it's requiring the client's to trust each other, and thus it's sharing it's game state. You have games like Minecraft which are designed like this, even though it's "multiplayer" it's not designed like a MMO, it's designed for Solo play that you can bring co-op players in, and as a consequence, a Vanilla Minecraft doesn't scale. It's constantly trying to synchronize every player with each other, even if they're not in line of sight. 

 

Games designed as a MMO, implicitly depend on the server to control state, and as direct consequence the game client lacks enough data to operate independent.

 

Private game servers are easily developed for MMO's that are really single player games. Take games like Genshin Impact, it's functionally a single player game that gates microtransactions. Anyone you pull into the game, just acts as a NPC party member as far as the game functions. There's no progress made by the player who joins. Genshin Impact uses Unity. If someone were so inclined to, they could create a private server, give themselves everything on the cash shop, and the game would still work.

 

Dead by Daylight uses Unreal Engine,  but there is only ever 5 players in the game, thus it's single player game engine that uses as server to solve state. It's notoriously cheated. A similar game called Identity V uses an in-house game engine, and is cheated just as much. These games, have added networking code to a game engine that implicitly trusts the client. You can not play DBD or IDV without the server. You can not create a P2P session. The state of everything is on the server. Every player knows where everything is because the server tells them so.

 

If the game clients have to know where everything is, then it's a single player game engine. Everything from Doom and Warcraft/Starcraft to games like Team Fortress and Fortnite and CSGO operate this way. It's pretty much impossible to change a single player game engine so that game client operated only knowing the line of sight of the player.

 

A game client that was designed from the beginning as a MMO game client will take into account only sending the world tiles the player is in, only transmitting the coordinates and animations of players in the line of sight of the player, and take care not to transmit data that the player should not know  (eg like the remaining health of a world boss, or other players damage to monsters/bosses other than it's enmity state.) If you are playing a FPS game, then you should quite literately not even know if another player is alive or dead unless you see them die or hear them die. Again, going back to line of sight.

 

Yet, when you play a game like Fortnite, not only do you know the health of every player in game from the start, the game clients actually know where everyone is because it needs to know this for the accessibility features. Someone firing a weapon far away from line-of-sight, so why is the game's accessibility saying what direction it's coming from? If this was real life, you can't tell what direction and distance a sound comes from if you're not oriented in the right direction when it happens. Maybe for the sake of Fortnite not always turning into hide-and-seek when you're down to the last 8 players, we can let some realism slide, but again, the point there is that the game clients know where everyone is, it's just a question of the players being honest. Go watch anyone playing Fortnite, accessibility features are all turned on, always.

 

So yes, while Unreal and Unity are used for MMOFPS/MMORPG's, the way they implicitly work as a general game engine do not permit them to be uncheatable because they are functionally a single player game engine that the player plays in a single player way, it just so happens that other entities in the game client are controlled by other players relayed through a server. 

 

And this would be fine in a game console-only world. It's not fine in a PC or Mobile world and games only become popular if they aren't immediately ruined by hundreds of script kiddies botting the game currency/skins or scamming players due to weak launcher-client security. 

 

There is room for another "general game engine" that is highly resilient to client tampering, but this requires re-thinking about what the game client needs to know, and a lot of game engines just send too much to the client, which is what enables that.

 

And none of this matters what programming language the game engine is in. You might have more luck writing the game server in Rust for the sake of not transmitting or parsing data from the game client that would overflow bounds checking, but the game client, as long as you aren't sanitizing the data from the game client, then that's all moot. You need to both check the data sent is data the client actually knows (Eg movement coordinates, targeting), and check that isn't trying to do something they should not be able to do (like using healing items they don't have.)

 

Link to comment
Share on other sites

Link to post
Share on other sites

57 minutes ago, Kisai said:

--snip--

Pure MMO games are also cheated to the hills, it doesn't really make them any less so at all. They are better at and designed to scale with thousands of online active players but they still have to put in place client side anti-cheat protection tools, which don't really work at stopping anything sophisticated and skilled enough.

 

I spent a long time insta kill, hit all, vac hacking in Maple Story 🙃. Games like Maple Story, because it's not the only one I did it on, learned their lesson about why people turn to doing that aka not making the game impossibly hard and long and unbalanced to level and play and put in place utterly unfair advantages to people paying money in a game designed for and marketed to actual minors who "don't have money".

 

Also UE doesn't make it easier to memory edit and cheat, and not all EU games are even the same when trying to do this. Games can and have put in their own game memory protection techniques when using EU that make them unique to any other game. What you do with a EU game is also exactly the same with Frostbite for example. Cheating is cheating, it's fundamentally achieved the same way no matter the game engine simply because of how computers work along with being on a common operating system (which even then isn't that big of a deal).

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, leadeater said:

Pure MMO games are also cheated to the hills, it doesn't really make them any less so at all. They are better at and designed to scale with thousands of online active players but they still have to put in place client side anti-cheat protection tools, which don't really work at stopping anything sophisticated and skilled enough.

Cause not enough disincentive exists to do so.

 

People are angry trolls, creepy script kiddies, or just see money in it, and if your game lacks monetization, people will absolutely do things to side step ever paying for anything.

 

 

2 hours ago, leadeater said:

I spent a long time insta kill, hit all, vac hacking in Maple Story 🙃. Games like Maple Story, because it's not the only one I did it on, learned their lesson about why people turn to doing that aka not making the game impossibly hard and long and unbalanced to level and play and put in place utterly unfair advantages to people paying money in a game designed for and marketed to actual minors who "don't have money".

Oh Maple Story and Mabinogi are absolute jokes, so much of those games are client sided that it's any wonder they games didn't die when people started switching to trampoline style hacking and just bypassing the anti-cheat's altogether. When nothing stops you, and you don't care about getting banned because you've invested nothing in it, gee I wonder why.

 

2 hours ago, leadeater said:

Also UE doesn't make it easier to memory edit and cheat, and not all EU games are even the same when trying to do this. Games can and have put in their own game memory protection techniques when using EU that make them unique to any other game. What you do with a EU game is also exactly the same with Frostbite for example. Cheat is cheating, it's fundamentally achieved the same way no matter the game engine simply because of how computers work along with being on a common operating system (which even then isn't that big of a deal).

It's easier because the source code is out there and if someone wants to do so, they can. Period. The only thing that makes it hard to cheat in any particular game engine is the OS allowing it to happen. That's why anti-cheats don't work in virtual machines. They can't. You can hack the virtual machine from the outside.

 

Small games that basically just one-to-many/many-to-one at an instance level are less likely to be caught because few people actually witness, or even know about the hacking going on until someone brags about it.

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×