Hi Will,
Will Ashton wrote:Is it a code library? Or a development environment like NetBeans, just for a special kind of game?
A Game Engine is both of those things and a lot more. Warning - generalizations a head:
A typical
IDE will allow you to program in multiple languages. For example, Eclipse can handle Java, C++, PHP, HTML, CSS, XML and others. An IDE will allow you to create many different types of programs. Again, using Eclipse, we can create simple Java programs, GUI interfaces in Swing,
Servlets, JSP/JSF pages, etc...
A Game Engine, however, is going to support only a few languages. All of it's development effort is going to be game centric. You won't be able to create a Servlet in a Game Engine, but the Game Engine will have a much more extensive library of methods and Classes specifically designed to speed up game development. A Game Engine will often have the ability to compile code for multiple platforms (PS4, Xbox, Mac, PC, HTML, etc..) - all from the same source code. If you have ever thought about converting a Swing Java program into Android Java, you know how hard that can be in a traditional IDE. With a Game Engine, it's single click.
In Game Engines, most of the setup is done through drag and dropping of predefined Classes. Often, this means there is very little actual coding (and one of the reasons it can generate output for multiple platforms). I did this last week from Unity's first tutorial:
http://chris-barrett.ca/unity/space_shooter/space_shooter.html I think the actual raw code I wrote was about 50 lines. Took about 8 hours, with most of that time being spent understanding how things like Light objects throw shadows, the interface, and the different syntax between Java and C#.
Now, Unity only allows an input language of JavaScript or C#. One of the reasons I tried Unity was I wanted to get an understanding of the differences between Java and C#. I encourage you to check out the list Mich provided if you prefer Java, but you can also get some great value out of the Unity tutorials. In particular, if you are new to OOP design, they do a great job of explaining class structures:
http://unity3d.com/learn/tutorials/modules
Publicly available Game Engines, such as Unity or the ones Mich outlined, won't be tied to a particular game type. However, in big game companies, more specialized Game Engines will be developed n-house. Writing a Game Engine is a massive undertaking, as behind the scenes Game Engines are also converting code into the OpenGL or DirectX languages.
Cheers!
Chris