153

Technical Reasons: Game made platform specifically: When some developers are making their games, they can sometime rely on platform specific functions. While the game engine might be able to build the game for multiple platforms, the non-game specific code might make a Windows specific call that either doesn't exist on other platforms or would require ...


90

Engineering for Performance Follow vendor recommendations. Use the correct data structures. Implement the correct usage patterns. Don't do anything stupid. Optimization When already written code is running slow, measure it, find out why, implement what is required to make it fast. Premature Optimization Make assumptions about what is fast or slow ...


80

I can certainly see why you would think that it would be hard to simulate those, but there are enough constraints on bullets (all projectiles, really) to make them easier. They are generally simulated as a single point, instead of as something with volume. This makes collision detection significantly easier, as now I only need to do collisions against ...


59

Usually you should separate the logical state of your game environment from the visual representation. The player might only see a small part of it on their screen, but you still keep the state of the whole level in memory and usually also calculate the game mechanics for the whole level. When your world is so huge that this would require too much ram and/...


56

As others have noted in the comments, the basic Euler integration method described in tenpn's answer suffers from a few problems: Even for simple motion, like ballistic jumping under constant gravity, it introduces a systematic error. The error depends on the timestep, meaning that changing the timestep changes object trajectories in a systematic way that ...


49

Short answer: read Sensible Error Handling 1, Sensible Error Handling 2, and Sensible Error Handling 3 by Niklas Frykholm. Actually, read all the articles on that blog, while you're at it. Won't say I agree with everything, but most of it is gold. Don't use exceptions. There are a plethora of reasons. I will list the major ones. They can indeed be ...


45

Probably one of the most efficient ways to implement bullets is using what is known as hitscan. It is rather simple in its implementation - when you fire, you check to see what the gun is aiming at (possibly using a ray to find the closest entity/object/mesh), and then you 'hit' it, doing damage. If you want to make it seem more like an actual, fast moving ...


37

You are going at it backwards. You start with the logical state of your game and model that. The whole logical state of the entire world will almost certainly be too much to be held in memory at once, so you break it down in smaller parts that can be loaded and saved independently. These parts are often referred to as chunks. These chunks can form a ...


31

Because being available doesn't mean being free & instant. Supporting one more operating system, in its most simplistic form, means one more platform to provide technical support for. The more platforms you support = The more platforms you need to provide support for = Spending more time on support = Losing work time that could have spent improving ...


29

As a game developer, my main concern hiring a C# guy would be a lack of low-level knowledge. So, consider a project where your work entails low-level optimization like re-arranging the data layout of classes or rewriting code to take advantage of SIMD instructions. Take a C++ open-source game, optimize it, and post the framerate increase on your resume. If ...


25

The Don't Dread Threads series by Intel, is quite good. It has 3 parts, the basics are covered in the first 1.5 of them. Don't Dread Threads 1 Don't Dread Threads 2 Don't Dread Threads 3 Summary of what was covered in first 1.5: Avoid Functional Decomposition First of all, they discourage using Functional Decomposition. Functional decomposition is just ...


25

Well there are a couple ways of thinking about this. One is to list the specific features the engine should have (what you've asked here.) However the other way is to just start making games without worrying too much about the "engine", and then features you find are being reused between multiple games (in particular, features used in every game) you should ...


22

If you want to do optimization at the right times, have slow machines and use them. For a small shop, a good option is to use a slow laptop on the commute and a fast desktop in the office. As an additional benefit, if you're a one man shop this also forces you to properly back up the entire build environment. By using a slow machine you'll know when you ...


21

Hey so I know this is a month late response, but I thought you'd be interested in an answer that's more than "I don't know." or "maybe." The comments on this post made me think to go to the source, so I sent an email to their info email and this the response I got (I guess I could take a screen shot as proof if needed; my inquiry email is first): Hello, ...


21

You'll need to setup a test account and then publish your build as a draft application in order to successfully test purchases and the workflow as a normal user would. This is what Google has to say on the matter of test accounts: The Google Play Developer Console lets you set up one or more test accounts. A test account is a regular Google account that ...


20

First of all, your hard data and facts. All the game programming gems sold fairly well, each ranking around the 200k mark on Amazon bestsellers list. Gems1: 198,126 Gems2: 209,933 Gems6: 200,574 Gems8: 202,163 So based on that data I wouldn't say lack of sales is a good reason to stop. But what about the content. "Game Programming Gems" was like a really ...


19

Language: C was predominant, but C++ was around and used. Dev tools: Development environments included those from Borland and Watcom (almost unheard of today) among others. Both Borland and Watcom had their own compilers and their own IDEs. Borland was by far the most popular in general, though Watcom had a reputation for producing faster compiled ...


19

Which Stats? First, with regards to what stats to implement, you need to work backwards from mechanics to derived stats to basic stats. Determine what effects and mechanics you want during play, and determine how you want those mechanics to work with one another. The important notion when looking at relationships between mechanics is identifying the aspects ...


19

There are good answers so far, but let's get to the bottom line. According to Steam's June 2017 Hardware survey, 96.24% of users sampled used Windows. Of Windows users, 87.37% are either Windows 10 or 7, 64 or 32 bit. OSX variants represent 2.95% of users, and Linux variants total 0.72%. Time is money. Unless your market is niche and targets OSX or ...


19

Consider using a framework, like MonoGame. It is a kind of a middle ground between "nothing" and a full-blown engine like Unity or Unreal. It saves you from the really finicky implementation details (3d games are especially math heavy, both for graphics and physics), without dictating too much how things should be done. Adopt a modular system - this will ...


17

I was first party at SCEA when we launched the PS1, and the overwhelming majority of games were written in C, with some time critical bits in assembler. All of the library calls were C as well.


17

Whatever you read that said Init and CleanUp is better, should have also told you why. Articles that don't justify their claims are not worth reading. Having separate initialisation and shutdown functions can make it easier to set up and destroy systems because you can choose what order to call them in, whereas constructors get called exactly when the ...


17

In short: Develop programs used by others to create something (i.e. tools). A popular and easy example would be a level editor for a game. But this could be a lot more behind the scenes, like some version tracking program, a bug tracker, forums, some checker to verify content is without mistakes, etc.


17

You should notice that game design is nothing that is necessarily related to programming. It also applies to board games, card games and every type of game, computer games being one of these. It's a different field and being a good programmer doesn't mean you're a good game designer. However being a programmer already can help you becoming a good game ...


16

Another technique is to mimic that used by Napoleonic battalions (and probably as far back as Greek phalanxes if not further). Frontage is generally maintained constant, and as a man falls (in any rank except the back) he is replaced by the man directly behind him stepping forward. The back rank is shuffled by the NCO's to ensure a few men at the extreme ...


16

I can't imagine designing a game without using object oriented programming, because my entire understanding of how to design a game-program is based on OOP. Then it will probably be good for you to try writing some programs in non-OO style. Even if you discover that this is not pragmatic for you, you'll probably learn a lot along the way that will help you ...


16

You, of course, can use a third party solution. You can develop C# games with (in decreasing complexity) Unity, Godot, Monogame, OpenTK, among other solutions. Making a game without a third party game engine is perfectly viable. You can work with a window toolkit library, a graphics library, and so on. You will have a lot of flexibility... Yet, it is a lot ...


15

If you're writing networking code, this often is something you have to deal with, yes. Also it's possible that the byte ordering in a file format is not what your platform uses, so sometimes it matters there too.


Only top voted, non community-wiki answers of a minimum length are eligible