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


78

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


60

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


59

When I worked as a software engineering intern the past three summers, I also wanted to work on my own projects, but also spend time with friends/family. Not quite the pressure of family responsibility that you face, but still a time sink. The only way I could make things sort of work was identifying nights that were completely dedicated to one thing over ...


53

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


43

One thing that I've done lately, is getting up painfully early every morning to program- my mind is fresh, and I stay clearer throughout the day for my job and the rest of my activities. The problem with this route is the necessity of going to bed early- and if you've ever been on a programming rampage, you know it's tough to stop for simple things like (...


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


28

Do not try to do it because you know you can do it. Gameplay should be first, all things (even graphics) are secondary. If the game is fun and enjoyable but has poor (or not so next gen) graphics, it will still be fun and enjoyable and people will play it, and also your metacritic will be good. Otherwise if the game has awesome graphics and features (...


26

If you're going to use exceptions (which isn't to say you should, there are pros and cons to that approach that are outside the specific scope of this question), you should write properly exception safe code. Code that does not use exceptions and is explicitly not exception safe is better than code that uses them but is half-assing its exception safety. If ...


26

There is no one right way. What you're describing works, and is presumably fast enough that it doesn't matter since you seem to be asking because you're concerned about the design and not because it's caused you performance issues. So it is a right way, sure. You could certainly do it differently, by for example keeping a homogenous list for each object ...


25

IMHO your family should come first. The reward for time well spent on them will far out weigh any gains you acquire from your game dev. Balance your time wisely, but make sure they get the lion's share.


25

Most PS1 games were probably written in C, with some assembly and possibly some light "C with classes." This isn't a universal truth, necessarily -- for example Crash Bandicoot had a good portion of its gameplay logic built in a LISP variant. In general, you can only find out what languages were used for a game by asking the developers of that game. However,...


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

A tools programming position is generally about being a force-multiplier for the rest of the development team. The exact nature of the work will of course vary widely from studio-to-studio, depending on the individualized needs of that company. Primarily, however, you would be tasked with creating software that was going to be consumed by other developers ...


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


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