Popular programming-heavy examples include Unity, UDK, Unreal Engine 4, and CryENGINE. [1] X Research source
Polycode, Turbulenz, and MonoGame are example of frameworks created with both 2D and 3D games in mind. [2] X Research source
Visual Studio and Eclipse are two examples, but there are many others. Look for an IDE based around a language you are familiar with.
All but the most experimental games have a progress arc, so this is a good place to start the planning. Progress typically happens through one or more of the following: discovering more about the plot and characters, making decisions that affect the storyline, gaining new abilities or higher stats, exploring new areas, or solving harder and harder puzzles.
A constantly running game loop that checks for user input, processes the result, processes other events, calculates what needs to be displayed, and sends this to the graphics card. This should run at least 30 times per second. “Active listener” scripts that check for events and respond when they occur. For example, one script can watch for a player interacting with a door, then run the “open” animation and make the doorway non-collidable. Another script can watch for a weapon hitbox contacting the door, and run the “blow apart” animation instead.
Create the basic outline of the area. Decide on the basic path the player will most often take through the area. Add challenges and benefits (items) along this path. Space them close together for adrenaline and excitement, or farther apart for a more relaxed atmosphere. Start adding graphical elements. Place light sources along the main path to encourage players to follow it, and keep the side paths or less important areas dim. Match the gameplay, style, and setting. For example, a suspenseful horror game thrives on stretches of empty exploration punctuated by surprise attacks. A never-ending barrage of enemies overwhelms the player with adrenaline instead, while combat that requires careful tactical planning can distract the player from the emotional atmosphere.
Watch someone play without giving them advice, unless it’s basic tutorial information that hasn’t been added to the game yet. Frustrating mistakes and points where the player gets “stuck” are signs that you need to include more guidance. Once the game (or at least a level) is fairly complete, try to find strangers or acquaintances to help playtest. Friends tend to be more optimistic, which is great for providing encouragement but not as helpful for predicting how players will react.