149

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 ...


79

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/...


54

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 ...


48

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 ...


44

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 ...


30

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

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 ...


24

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 ...


23

What you do depends on the nature of the achievement. Unless your achievements all fit a simple pattern (collect X number of Ys), you're going to have to special-case them to some degree. Using a message-based communication system, you can provide hooks that makes the special-case coding localized. You can have certain actions fire messages to listeners who ...


23

Then there's a greenlight, and in an effort to clean things up, somebody writes a GameManager. Probably to hold a bunch of GameStates, maybe to store a few GameObjects, nothing big, really. A cute, little, manager. You know, as I was reading this, I had little alarms going off in my head. An object with the name "GameManager" is never going to be cute, or ...


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 ...


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 ...


17

Programmers are far from the only people in the game industry. From what you've stated, it sounds like you'd be much, much happier pursuing a game design career. You could still write down those plots, stories, characters, and fictional gaming worlds with a team of other game designers (depending on how big the game company is). Then just hand all the ...


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 ...


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