Game programming, a subset of
game development, is the
software development of
video games. Game programming requires substantial skill in
software engineering as well as specialization in one or more of the following areas, which overlap heavily to create a game:
simulation,
computer graphics,
artificial intelligence,
physics,
audio programming, and
input. For massively multiplayer online games, additional areas, such as
network programming and
database programming are often included. Though often engaged in by professional
game programmers, many novices may program games as a
hobby.