Author Topic: Computer Game Specific Programming Language  (Read 960 times)

logFarm

  • Jr. Member
  • **
  • Posts: 81
  • Karma: +0/-0
    • View Profile
Computer Game Specific Programming Language
« on: Sunday 2016-January-03 08:26:39 PM »
Abstract

I found a video on Jonathan Blow's youtube channel:
https://www.youtube.com/user/jblow888

it's called: A programming language for games

(Warning: Jonathan Blow youtube videos have an unexpected amount of
self promotion)


A programming language designed specifically for the computer game
industry is an interesting idea but after consideration,
quickly becomes brittle and impractical if not just pointless.

Here's a budding computer game developer's point of view.


Modern programming languages need an IDE

All modern programming languages have a collection of Integrated
Development Environments that speed up the process of software
development with that language.

These IDEs highlight typos and syntax errors. They have features to
speed up the creation of Graphical User Interfaces, where buttons and
check boxes, etc can be dragged and dropped and arranged without the
software developer typing a single line of text. IDE's have evolved
this way because industry required lots of software controlled by
Graphical User Interfaces.

A new computer-game-specific programming language, more than any other
type of programming language, will require an IDE for programming game
things that can be dragged and dropped and easily manipulated for efficient
computer game development but for the IDE and language to survive
an industry must adopt it.


Game Engines

Inside every computer game there is a piece of software that can be
referred to as the Game Engine. It's the game's brain. It refreshes
the computer screen, it displays all the pretty computer graphics, it
spawns enemies and other players and reacts to inputs such as the
keyboard, mouse or controller.

Computer game developers can create their own Game Engine or rent one
from people in the industry, such as: Unity3d and Unreal Engine

I use the term 'rent' because:

- the game developer never owns the Game Engine

- the game developer has to hand over a portion of every sale to the
  Game Engine people

Proprietary (rented) Game Engines have their own set of instructions
that give programmers access to the clever workings inside the Game
Engine. Collectively these instructions are called an API.

- rented Game Engines often come with their own programming
  language, built in, for game developers to use

- and they also allow the game developer to use other popular
  industry standard programming languages to access their API

The creation of their own programming language and the creation of an
API designed to be used by other popular programming languages does not
just happen, both take years to build. Years !!

A new computer-game-specific programming language would not work
with Unity3D or Unreal Engine until-after these game engine business
invested a huge amount of time and money to make it work with their API
but why would they when their game engines already work perfectly well
with their own and other industry standard programming languages?


The mortality of programming languages

New programming languages arrive and are forgotten at a surprising
rate; initially gaining brief enthusiasm but unless big businesses
(plural) adopt them they are left unmaintained and become useless.

Even when massive technology businesses adopt or invent new
programming languages, those businesses can't force developers to
stop using what they are already comfortable with.

All businesses are in 'it' for one reason: to make a profit

A new programming language will not be adopted by an industry unless
it solves or mends problems that are too costly or too time consuming
to be patched using the current crop of industry standards.

This makes the idea of creating a whole new industrial standard
programming language for a specific corner of the computer industry
ridiculous because there aren't any problems which the current crop of
industry standard programming languages suffer that prohibit the
rapid development of computer games.

In fact the opposite is true.


Object Oriented Programming

Object Oriented Programming does something quite amazing and fun, it
allows the programmer to think of software problems in terms of
physical objects or conceptual blocks.

For example a game character can be declared as a GameCharacter object
where attributes like strength and speed are all definable.

The fun part is that we can create a single BaseCharacter and then
build all other characters based on it. Good, bad and ugly game
characters will have their own features subtly changed but all will
inherit base features from the BaseCharacter class.

Further more WingedEnemies can be based on (extend) BaseEnemies which
in turn extend the BaseCharacter class. Same goes for FlyingFriendly
objects that also extend the BaseObject but have subtle differences
such as run, fly, fight, etc. This extending and branching from base
objects and subtly changing their gubbings is also known as:
polymorphism (worth looking up if you have the time)

From a game design perspective being able to conceptualise and program
game things in real world terms is a great benefit.

There are many Object Oriented programming languages in use and they
can all be used to make computer games.


Virtual Machine

Jonathan Blow dismisses the idea of a Virtual Machine presumably
because he perceives them as a dampener to a computer program's
ability to run speedily.

The game MineCraft uses the Java Virtual Machine. I point this out
because if speed really is an issue then MineCraft users could run
into performance problems any time now.

A benefit of a Virtual Machine is its security layer checks a computer
program before it runs, preventing it from doing something malicious.

Another benefit is that the game developer only has to write their program
once, it will then run on all computers that have that type of Virtual Machine
so a single program will run on Apple, Linux, Windows and even Unix
computers without the developer having to make any changes;
cross platform.

Cross platform obviously reduces the cost of development since only a
single version of the game ever needs to be maintained.


Conclusion

Jonathan Blow is an outspoken and influential voice in the Computer
Games Industry. His views carry weight but I don't think creating a
dedicated computer-game-specific programming language is a good idea.

I believe we already have programming languages that meet the
challenge of enabling game developers to rapidly build computer games.

Virtual Machines allow the game developer to write and maintain a
single software, knowing it will run cross platform.
« Last Edit: Sunday 2016-October-16 09:26:29 PM by smfAdmin »