User Tools

Site Tools


galactic_engine:galactic_2d

Galactic 2D Engine

The Galactic 2D Engine is a 2D only variant of the Galactic Engine, which is built to create 2D games of the side-scroller and top-down types. The modular setup of the engine will likely support isometric games at some point, however the initial launch of the engine will only support top-down and side-scroller games. The Engine itself uses technologies that are common to Galactic Server and Galactic 3D, and therefore shares many common features with these technologies as well.

Technology

Galactic 2D makes use of the ENet Library to support a high powered UDP network protocol that is cross-platform compatible. The protocol is established in an identical fashion to that of the Galactic Server Networking Protocol allowing clients to connect to the Galactic Server. By default, a listen server (hosted in game) supports a maximum of 128 players at a time. To render the scenes of Galactic 2D a few useful C++ libraries are included in the engine. Galactic 2D runs on the OpenGL library to introduce cross platform support. For audio purposes provided by the engine, we are using the OpenAL Soft library to handle area sound effects as well as global sound effects. The last important piece of engine technology is the implementation of the LUA JIT scripting language to allow for fast game and object logic scripting to implement your games.

Libraries Used

Galactic 2D uses the following C++ libraries.

Operation

Operation of Galactic 2D works on a standard argument parsing mode. Upon creation of a Galactic 2D application there are two options that can be used for deployment. The first option is game specific deployment, and this is the option used by companies and organizations looking to deploy custom modules. They will directly write a module under the Galactic code and initialize by means of the default loading subset. The other option is to deploy individual modules by deploying an application that runs the -game [x] parameter, which will then load into the engine any external modules with the name [x] as well as any LUA code under the [x] directory located under the main folder of the application. This will mainly be the tool used by people who wish to deploy subsidiary games running under the base Galactic 2D application. Anyone who is using Galactic 2D for indie development purposes will fit under this category as well. While support at the initial release may not be provided, a -mod [x] option will be created to allow for user modifications in which an external module under the name [x] with LUA code under the [x] directory will be loaded in under a non-overriding mechanic which will allow users to play under the base game and with their modification at the same time. This mechanic will allow the user to remain under the game's listing server while using their custom mod content.

Game developers can add some additional controls to their game using some internal engine fields set by usage of the -mod parameter to do things such as locking out access to stats and progression by means of using a simple engine flag to test for modifications.

Modules

Galactic 2D uses the Galactic Module System to allow developers to use the engine to create games of the style needed by the developer. Galactic 2D itself servers as a framework, or a barebones engine, providing the developer with a generic toolset needed and used by nearly all 2D game engines such as networking, rendering, sound, and more. By simply creating an external module containing all of the functioning needed by a specific game by using the existing engine classes, a development team can quickly move from the idea phase, to the development phase without needed to dig deep into the engine code to start working.

Modding

We at Phantom Games Development have a strong belief that great games, provide the end users with as much customization as possible, and the easiest way to provide this great functioning, is to introduce game modding, or the ability for independent software designers/developers to create custom content that is not included in the original game. There are two classes of modifications related to Galactic 2D. Serverside modifications and Clientside modifications. A Serverside modification is a modification that adjusts or extends the existing gameplay mechanics with new content, this content is usually already included in the game itself, so nothing needs to be sent to the client for the client to be able to play on the server. A Clientside modification is a modification that adjusts the way a game client works in an individual modification, these are usually adjustments that include adding new content to the game that originally wasn't present or by performing what is known as a conversion modification, the art of transforming the original game into something completely different.

Clientside modding in some engines requires the end user to download the content from online. In Galactic 2D, the networking layer will transfer between the server and the client, files that need to be used by the modification. However, for security purposes on the client, only the following file formats can be transmitted across the networking layer:

  • Image File Types (.PNG, .JPG, .GIF, ETC)
  • Script File Types (.LUA, .GUI)
  • Engine Specific File Types (.MIS, ETC)

To assist mod developers who develop mods with large amounts of files associated with the download, we will be introducing a fast-download protocol, probably with the second or third major release of the engine, which will allow you to specify an internet location containing your files and to allow the engine to download the files of the above format through those means.

Licensing

Relevant news article regarding this topic to be posted over the next few days….

galactic_engine/galactic_2d.txt · Last modified: 2014/07/23 14:50 by phantom139