Results 1 to 12 of 12

Thread: Awesome game/engine features?

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1

    Default Awesome game/engine features?

    Hey guys, this thread here is just started out of curiosity. Many of you know I'm working on a commercial game engine. And I was curious about what (technical) features in games/engines gamers think are important; whether it be advanced post-processing effects, super-realistic physics, ultra-high anti-aliasing, dual display support, etc... So what is it, on the technical side of things, that you expect out of a modern AAA game title? What features are the most important to you? The least important?

    Developers and gamers don't always have the same ideas about what's important and what's not. But I think it's important to listen to the gamers. The gamers, after all, are the ones who buy games... that's how we pay the bills. And as an engine developer that is important to me because games will be made with the engine.

    This isn't really about game-play and game mechanics, as I'm not even developing a game right now, but you're welcome to throw in that sort of thing if you have ideas.

  2. #2
    Crazyeyesreaper's Avatar Primicerius
    Citizen

    Join Date
    Jan 2011
    Location
    Maine, United States
    Posts
    3,287

    Default Re: Awesome game/engine features?

    the ability to disable mouse smoothing honesty everyone expects the engine to have the basics aka post process effects, AA, AF, etc with tessellation being a bonus via DX11 or Open GL

    but yea many games today have mouse smoothing which is infuriating when you have an expensive gaming mouse and they try to use software to smooth your movements. games like Medal of Honor Airborne using Unreal Engine the smoothing is such a problem i shelved the game completely.

    Great graphics etc is one aspect, where almost every game engine on the market can see improvement is in the interaction offering new ways to do the same thing or improving or just OFFERING something that used to be in every game but has been forgotten in this day and age of ports.



    long story short, offer the ability to disable mouse smoothing completely with the mouse still working. a couple games you turn the software sensitivity down and the mouse will no longer work period. let the hardware itself do the work for once.
    CPU: i7 3770K 4.6GHz / i7 4930K 4.4 GHz / i7 4770K 4.6 GHz
    CPU HSF: Thermaltake Water 2.0 Pro / Review Samples / Review Samples
    MOBO: Biostar TZ77XE4 / ASRock X79 Fatal1ty Champion / MSI Z87 GD65 Gaming
    RAM: Mushkin Redlines 2x4GB 1866 MHz / 4x4GB Gskill 2133 MHz / 2x4GB Kingston 2400 MHz
    GPU: Integrated / GTX 780 / HD 5450 Passive
    PSU: Thermaltake Toughpower Grand 1050w 80+ GOLD / NZXT Hale82 650w Modular / same
    CASE: Nanoxia DS1 / Nanoxia DS1 / Lian Li Test Bench
    HDD: 160 HDD / 512GB SSD + 120GB SSD + 5.5TB HDD / 60gb SSD

  3. #3

    Default Re: Awesome game/engine features?

    Quote Originally Posted by keinmann View Post
    Hey guys, this thread here is just started out of curiosity. Many of you know I'm working on a commercial game engine. And I was curious about what (technical) features in games/engines gamers think are important; whether it be advanced post-processing effects, super-realistic physics, ultra-high anti-aliasing, dual display support, etc... So what is it, on the technical side of things, that you expect out of a modern AAA game title? What features are the most important to you? The least important?

    Developers and gamers don't always have the same ideas about what's important and what's not. But I think it's important to listen to the gamers. The gamers, after all, are the ones who buy games... that's how we pay the bills. And as an engine developer that is important to me because games will be made with the engine.

    This isn't really about game-play and game mechanics, as I'm not even developing a game right now, but you're welcome to throw in that sort of thing if you have ideas.
    I will divide my opinions on these things into two categories. The first is the realistic, not just what I personally want to see in engines, category.

    Mouse friendly user interface. Seriously, why do people still have their heads shoved up their asses regarding this? Make it mouse friendly please. And, why is it that going back in a menu is always so difficult? Just make right clicking anywhere in a menu return to the menu you were in before this one, like the later Assassin's Creed games did.

    Moddability. From an engine standpoint, this ranks huge to me. Basically, the ability to import new models and textures, create new items and scene props, new agents, scripts, and scenes. And have the ability to run it independently from the main game, so you don't have to overwrite all the game files.

    Key Mapping. Please, support key mapping. There are 104 keys on a keyboard, people like to play with different combinations. It's perfectly possible, yet fewer and fewer people do it.

    Not having to port forward. I have no problem doing this, but as someone who uses a rather mainstream internet provider, and can't set my ISP's router to reserve (basically set static internal IPs) internal IPs, port forwarding becomes a major pain in the ass, since I have to do it again every time I want to play a game online. I'm not entirely sure how to get around this, since I haven't done lots of network programming, but if it's possible, and you're planning multiplayer, please do this.

    Let me disable graphics. Seriously, graphics options like most post-processing effects, motion blur, and DOF give me severe dizziness and headaches. Most games let me disable them, that's something that ranks highly with me and I know I'm not alone on this issue, as I know several other people that have the same problems.

    No artificial limitations. I understand, sometimes you need to, but I have to echo Crazyeyes on this. Disabling mouse smoothing would be huge. I've got a 3500 dpi gaming mouse, I use it to play games with, not click exact pixels. I hate it when mouse smoothing screws up my mouse, and worse yet, if I have lag in-game, and it falls out of sync, and my mouse is jumping all over the place in terms of sensitivity and speed. Also, things like artificial resolution limitations, artificial FPS limitations, and forced Vsyc can be really annoying. (Looking at you, Dark Souls! )

    Now for my personal list. These are the advertising points for me, that I see and go "I NEED to buy that game!"

    Good destruction physics. I'm getting sick of people advertising good physics in their games and engines, when really it's just basic gravity. We've had that for years, it's no longer a novelty item. It's a standard. What I want to see is things like crumbling/cracking buildings and other rigid materials, bending, cloth waving (not just shader tricks ) and flexibility. Yeah it's pretty much impossible to do, but some games have gotten certain elements of it right. Take the Source engine, with it's awesome destruction physics, or Borderlands 2 with the cloth physics. Also in this category is liquid physics. Those are awesome too.

    Light shafts and AO. Personally, I think that these are freaking awesome, and not enough games implement them.

    Good camera. I can't stand it when you're playing a game, say, a first person shooter, and the camera just "glides" around, but by the same token, people overemphasize the head bob. It should be subtle, but it shouldn't feel like you're always in spectator mode. And the ability to see your feet/legs is cool too. Also, I like to be able to turn my character's head separate of his body, so you can look over your shoulder, so to speak, like in ArmA 2. The same thing applies when in vehicles. Also, finally, adjustable FOV ranks highly in that category for me.

    3D sound, and if the game/engine's multiplayer, 3d voice chat. No one implements voice chat anymore, and 3d voice chat is just awesome. 3d sound is kind of becoming a given, but it's not a make or break for me.

    Regarding what I really don't care about...

    Amazing graphics. As long as the finished product looks nice, that's cool. The game developers can tweak the graphics as far as I care, and honestly, I always disable/turn down my AA because it murders video cards. Tessellation is a gimmick and should be low priority since that level of detail can be manually rendered.

    Everything else that I didn't mention.
    Under the Patronage of Leonidas the Lion|Patron of Imperator of Rome - Dewy - Crazyeyesreaper|American and Proud

  4. #4
    GrnEyedDvl's Avatar Liberalism is a Socially Transmitted Disease
    Artifex Technical Staff

    Join Date
    Jan 2007
    Location
    Denver CO
    Posts
    23,851
    Blog Entries
    10

    Default Re: Awesome game/engine features?

    Quote Originally Posted by Bolkonsky View Post
    Moddability. From an engine standpoint, this ranks huge to me. Basically, the ability to import new models and textures, create new items and scene props, new agents, scripts, and scenes. And have the ability to run it independently from the main game, so you don't have to overwrite all the game files.
    My thoughts on this would be to stay away from proprietary stuff, like writing your own "new" database that everyone has to hack into to do anything with it. Or model types that someone has to create a tool for to decode. Or even just a new binary file format that has to be interpreted and unpacked.

    The wheel has already been invented, no need to reinvent it. Unless you are also going to release tools for your special stuff, then keep it simple. Text files will work for most things. If you want them already formatted for the engine for load time concerns then make a tool that converts them separately before the game is launched, that people can run when they make changes to the files. And include the files in the game install, instead of as a separate download or obtaining them by unpacking. In todays market where game install sizes are measured in gigs, throwing in 5 megs of text file isnt going to kill anyone.


    Not having to port forward. I have no problem doing this, but as someone who uses a rather mainstream internet provider, and can't set my ISP's router to reserve (basically set static internal IPs) internal IPs, port forwarding becomes a major pain in the ass, since I have to do it again every time I want to play a game online. I'm not entirely sure how to get around this, since I haven't done lots of network programming, but if it's possible, and you're planning multiplayer, please do this.
    Impossible.

    All network traffic has to run on ports, that is how it is routed. And game traffic is generally UDP, where web and FTP and stuff like that is TCP. And all the common protocols have a standardized port number, web is 80, FTP is 21, etc etc. Anything below 1023 is basically reserved space, so you have to select a port number above that and preferably not one being used by another game. If a game tried to broadcast UDP traffic say on port 80, since we know this one is generally open, it will conflict with your mom when she is surfing the web, that is if it didnt get dropped as malicious traffic since UDP is coming in on a TCP port.

    If you are having problems with the router provided by your ISP, then buy your own router and you can assign static IPs. You probably can with the one you already have, and even if you cant you can set your individual machine to a static IP and forward to it permanently.

  5. #5

    Default Re: Awesome game/engine features?

    Quote Originally Posted by GrnEyedDvl View Post
    My thoughts on this would be to stay away from proprietary stuff, like writing your own "new" database that everyone has to hack into to do anything with it. Or model types that someone has to create a tool for to decode. Or even just a new binary file format that has to be interpreted and unpacked.
    I do like the system Mount&Blade has set up, though I don't like their scripting language in and of itself (it's not OOP so it can get incredibly complicated at times.) Basically, the game loads up the native module, but you can make a new folder as a different mod, and run that. Then if you put all your resources in the proper sub folder, and add their names (each binary resource file can contain more than one mesh, texture, and material) to a .ini and then using their scripting language (which is compiled on Python 2.7) you can add items to the game. You can also use their scripting language to change just about any aspect of the game itself, that's not predetermined by the .exe

    The thing with a databse and binary file formats is that IF you provide the tools for them they are incredibly easier to mod with. They're also much faster to load. Rather than exporting every single mesh and texture and animation as it's own file, and loading that into the game, you can group them up, reuse materials. You also have increased options, if there's a tool available like OpenBRF. With OpenBRF, entirely fan made, you can import meshes, textures, make new materials, set shading, spec maps, normal maps, bump maps, and set vertex coloring. You can import SMD animations, auto-rig them to meshes, generate collision meshes, generate AO, and set hit boxes. It's a beautiful tool, but by the same token, it took years to properly make because everything had to be decompiled first.


    The wheel has already been invented, no need to reinvent it. Unless you are also going to release tools for your special stuff, then keep it simple. Text files will work for most things. If you want them already formatted for the engine for load time concerns then make a tool that converts them separately before the game is launched, that people can run when they make changes to the files. And include the files in the game install, instead of as a separate download or obtaining them by unpacking. In todays market where game install sizes are measured in gigs, throwing in 5 megs of text file isnt going to kill anyone.
    The answer to this is just have a scripting language on Python or Lua that compiles text files into engine-readable format. The database thing might be nice, but really isn't worth the effort. Take CA for example. They make this database system for the Warscape engine, sacrifice moddability in the name of load times, and then still make you compile shaders for ten minutes every time you start the damned game. That just makes negative sense. If you want to save on loading time, don't have the user compile the shaders every time they start the game. Or find a faster way to do it. Thousands of games have.


    Impossible.

    All network traffic has to run on ports, that is how it is routed. And game traffic is generally UDP, where web and FTP and stuff like that is TCP. And all the common protocols have a standardized port number, web is 80, FTP is 21, etc etc. Anything below 1023 is basically reserved space, so you have to select a port number above that and preferably not one being used by another game. If a game tried to broadcast UDP traffic say on port 80, since we know this one is generally open, it will conflict with your mom when she is surfing the web, that is if it didnt get dropped as malicious traffic since UDP is coming in on a TCP port.
    OK, yeah I have no real idea how all this stuff works, but I've noticed that games stop making me do this, until Borderlands 2 came out. There had been an issue in #1 where you had to forward about a dozen ports or so to get it working properly with the multiplayer, and so they promised PC users that for #2, you wouldn't have to do that. So #2 comes along and for most people you don't, of course I wasn't one of them, I still had to, but then with a small patch, no one does. So whatever they did, they got around the issue somehow.

    If you are having problems with the router provided by your ISP, then buy your own router and you can assign static IPs. You probably can with the one you already have, and even if you cant you can set your individual machine to a static IP and forward to it permanently.
    I did but I still need to use the ISP's since it's a router and modem, fiber optic etc. My issue comes from assigning my router a static IP for the port forwarding, there's no option in the ISP's to do it. At least that I can find. If I could make my router static, then I wouldn't have the problem because I have my PC set static on my router.

    Also, some kind of more intuitive AI mesh generation, if you go that route, would be nice. There's some good open source ones that dynamically generate AI mesh, from what I've heard.
    Last edited by Bolkonsky; September 27, 2012 at 06:39 AM.
    Under the Patronage of Leonidas the Lion|Patron of Imperator of Rome - Dewy - Crazyeyesreaper|American and Proud

  6. #6

    Default Re: Awesome game/engine features?

    Quote Originally Posted by Bolkonsky View Post
    The answer to this is just have a scripting language on Python or Lua that compiles text files into engine-readable format. The database thing might be nice, but really isn't worth the effort. Take CA for example. They make this database system for the Warscape engine, sacrifice moddability in the name of load times, and then still make you compile shaders for ten minutes every time you start the damned game. That just makes negative sense. If you want to save on loading time, don't have the user compile the shaders every time they start the game. Or find a faster way to do it. Thousands of games have.
    Sounds like they copied their code from one of the more complex DirectX SDK Samples!

    Pre-compiling shaders is extremely easy... you can do it with FX Composer or with the DirectX Effects Framework. The former takes 1 second and a mouse-click, the latter takes about 3 seconds and a line of code. I can't imagine a commercial game not pre-compiling their shaders if they knew it was going to take very long to do them all. Or you could at least defer the work to another thread as slower operations are handled, like:

    Code:
                Thread shaderLoadThr = new Thread(() => {
                    foreach (var path in shaderPaths)
                        _compileShader(path);
                });
                shaderLoadThr.Start();
    
                _loadWorldMap();
                _loadTerrain();
                _loadTonsOfSweetContent(); // All of this could be delegated to separate threads
    
                shaderLoadThr.Join(); // Must wait for it to finish before we go on... :whistling
    Quote Originally Posted by Bolkonsky View Post
    OK, yeah I have no real idea how all this stuff works, but I've noticed that games stop making me do this, until Borderlands 2 came out. There had been an issue in #1 where you had to forward about a dozen ports or so to get it working properly with the multiplayer, and so they promised PC users that for #2, you wouldn't have to do that. So #2 comes along and for most people you don't, of course I wasn't one of them, I still had to, but then with a small patch, no one does. So whatever they did, they got around the issue somehow.


    I did but I still need to use the ISP's since it's a router and modem, fiber optic etc. My issue comes from assigning my router a static IP for the port forwarding, there's no option in the ISP's to do it. At least that I can find. If I could make my router static, then I wouldn't have the problem because I have my PC set static on my router.
    It's probably because most modern games are automatically forwarding the port for you, and Windows will often give you a pop-up message that says something like "Some of the features of this program are being blocked: would you like to unblock them and allow incoming connections?" If you say yes the port is opened.

    Fear not. Since you mentioned this you have reminded me of how important this is. A few years ago I was as frustrated as you are about the hassle of port-forwarding, so I wrote a DLL called "UPnPNATLib.dll" which contains code to automatically forward a desired port for TCP/IP and/or UDP. It can also strip information from routers and do a few other things. I'm about to make a note to revisit this handy dll and integrate it into the engine; either by merging its source into the engine's main DLL or just deploying it side-along.

    Quote Originally Posted by Bolkonsky View Post
    Also, some kind of more intuitive AI mesh generation, if you go that route, would be nice. There's some good open source ones that dynamically generate AI mesh, from what I've heard.
    Pray explain? I'm not sure I know what you're talking about!

  7. #7

    Default Re: Awesome game/engine features?

    Quote Originally Posted by keinmann View Post
    Sounds like they copied their code from one of the more complex DirectX SDK Samples!

    Pre-compiling shaders is extremely easy... you can do it with FX Composer or with the DirectX Effects Framework. The former takes 1 second and a mouse-click, the latter takes about 3 seconds and a line of code. I can't imagine a commercial game not pre-compiling their shaders if they knew it was going to take very long to do them all. Or you could at least defer the work to another thread as slower operations are handled, like:

    Code:
                Thread shaderLoadThr = new Thread(() => {
                    foreach (var path in shaderPaths)
                        _compileShader(path);
                });
                shaderLoadThr.Start();
    
                _loadWorldMap();
                _loadTerrain();
                _loadTonsOfSweetContent(); // All of this could be delegated to separate threads
    
                shaderLoadThr.Join(); // Must wait for it to finish before we go on... :whistling
    Of course it is! I can only think of one other game in the last ten years that does that, and it's Battlefield 2. Any time you changed your graphics options, even if it was just resolution, it would take about five minutes to recompile the shaders. My guess is that they do it dynamically to adjust for better performance, but it's a pain in the ass. Off and SSD, with 8 GB of RAM, a 4.6ghz Quad-Core CPU (admittedly FX so with FP operations it's as bad as a dual core, but other members of TWC have tested this out on their Ivy Bridge) and a 3gb GTX 660, it took me a 2:38 seconds to load the game. People with stronger CPU's have gotten that down to just under 2:00. Which is ridiculous when you consider that's not loading a battle or anything, just the game. On a traditional HDD with a mechanical arm, you're adding 5-7 seconds at most, if I remember correctly. Now on an SSD, loading should be almost instant - as dumping the resources onto your RAM and GDDR5 RAM from a Solid State drive is lightning fast for every other game. We're talking drives with 500+mb Read/Write speeds, if not more. Even if the game loads 25 gigabytes (which it's not doing, since you don't have nearly that much RAM, in fact I'd be surprised if the game loads more than 2 gigabytes, maybe 4 on some systems) that's under a minute, still. And on a 2-4 gigabyte, that's 3 seconds.

    Sorry for the wall of text, but this issue pisses me off to no end. All the pre-Warscape games load in less than ten seconds off my mechanical HDD. Even big mods like TATW. Yet I sit there twiddling my thumbs for Warscape. And I wouldn't even mind that, except that it doesn't need to take that long. Not by miles.

    It's probably because most modern games are automatically forwarding the port for you, and Windows will often give you a pop-up message that says something like "Some of the features of this program are being blocked: would you like to unblock them and allow incoming connections?" If you say yes the port is opened.

    Fear not. Since you mentioned this you have reminded me of how important this is. A few years ago I was as frustrated as you are about the hassle of port-forwarding, so I wrote a DLL called "UPnPNATLib.dll" which contains code to automatically forward a desired port for TCP/IP and/or UDP. It can also strip information from routers and do a few other things. I'm about to make a note to revisit this handy dll and integrate it into the engine; either by merging its source into the engine's main DLL or just deploying it side-along.
    Yeah, like I said I know nothing about it except that it works for some games and not others. According to Gearbox, it was an issue with internal UDP firewalls in routers that caused the connection problems in Borderlands 2, and it's all working fine now since the patch. I'm glad to hear I'm not alone with my frustration, though.


    Pray explain? I'm not sure I know what you're talking about!
    Some people call it NavMesh, I'm not sure if there's even an alternate way of doing this, but basically when you have a game, you need to be able to tell the AI where to go. Naturally, this will depend on where you want them to be able to go, and naturally, this will change from time to time. For instance, you don't want them walking off a wall. So the rather terrible solution but easiest and from what I can tell, most common, solution to this is an AI mesh. Basically a plan that you change the vertext positions manually to match where you want them to be able to walk.

    Here is an example of where the AI can go in Mount&Blade Warband:
    http://img93.imageshack.us/img93/996...9040616435.jpg

    That mesh on the ground will allow them to walk there. Those vertex points you can click in the in-game editor to manually align where you want them to go.

    Now imagine that you have a thousand scenes with NPCs and AI. And imagine that you have to map every single one like that to keep the AI off areas where they shouldn't be, make sure they don't walk up the sides of houses or cliffs, etc. You can do it without an AI mesh, but it gets incredibly complicated. You encounter glitches where they walk into things. Maybe you know of a better way to determine where or where they cannot go. If so, I definitely want to hear about it.

    However, if you decide to use the AI mesh method, something like this would be awesome:
    http://code.google.com/p/recastnavigation/

    http://cdn.wolfire.com/blog/recast/recast2.jpg

    Basically, it automatically generates the AI mesh and then you do some minor tweaking and go on your way. And it's free for commercial use.
    Under the Patronage of Leonidas the Lion|Patron of Imperator of Rome - Dewy - Crazyeyesreaper|American and Proud

  8. #8
    GrnEyedDvl's Avatar Liberalism is a Socially Transmitted Disease
    Artifex Technical Staff

    Join Date
    Jan 2007
    Location
    Denver CO
    Posts
    23,851
    Blog Entries
    10

    Default Re: Awesome game/engine features?

    Quote Originally Posted by Bolkonsky View Post
    I did but I still need to use the ISP's since it's a router and modem, fiber optic etc. My issue comes from assigning my router a static IP for the port forwarding, there's no option in the ISP's to do it. At least that I can find. If I could make my router static, then I wouldn't have the problem because I have my PC set static on my router.
    If you want help with that, start another thread so we arent hijacking this one. I have no idea what router you are using, but I have no doubt we can solve your issue.

  9. #9

    Default Re: Awesome game/engine features?

    epic fail, please delete.
    Under the Patronage of Leonidas the Lion|Patron of Imperator of Rome - Dewy - Crazyeyesreaper|American and Proud

  10. #10

    Default Re: Awesome game/engine features?

    I really like these ideas. A lot of this isn't the responsibility of the engine but of the game using the engine (e.g., graphics options and menus). But it's still valuable information to me. Keep it coming! :-)

  11. #11

    Default Re: Awesome game/engine features?

    Quote Originally Posted by keinmann View Post
    I really like these ideas. A lot of this isn't the responsibility of the engine but of the game using the engine (e.g., graphics options and menus). But it's still valuable information to me. Keep it coming! :-)
    Well, technically the engine has to support it all anyways, so I figured I'd cover all the bases. (Yes, I'm that paranoid with modern development. )
    Under the Patronage of Leonidas the Lion|Patron of Imperator of Rome - Dewy - Crazyeyesreaper|American and Proud

  12. #12

    Default Re: Awesome game/engine features?

    It's ok! I can't begrudge Bolkonsky for just wanting help with his router. But I see that it has been turned into a thread of its own already.

    You guys have all given me some very powerful ideas and suggestions that will not be forgotten. A lot of it the engine already makes available to the user-programmers, but it will ultimately be up to them what items are on the graphics settings menu and such. However, for those such things I can publish a PDF of game programming standards and guidelines for the engine and distribute it side-along as Microsoft does for its various SDKs and Frameworks. Thanks for all the well thought-out ideas and replies, and I'm interested to hear more from you and from more gamers!

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •