Quick links

  • wiki with tutorial to get started quickly
  • API documentation to learn about details (version 0.1.1)
  • API documentation to learn about details (version 0.2-M1)
  • Trello board to get in touch
  • Twitter account to stay updated

Frequently Asked Questions

What's new?


We just released first bugfix release for SpecGine 0.1. It should be source compatible. See release notes for details.

We recommend trying our first milestone release of SpecGine 0.2. It features lot of improvements and new features. See release notes for details.

What is SpecGine?

SpecGine is a cross-platform game engine made by SpecDevs. SpecGine is written in Scala and is utilizing LibGDX to support multiple platforms, including:

  • Windows
  • Linux
  • MacOS X
  • Android
  • iOS

SpecGine was created as an in-house solution, but we decided to release some parts of our technology stack to wider audience. Engine is currently in alpha stage and lots of functionality is still missing, but parts that are already present were carefully selected, and should be relatively stable.

All released code and documentation is licensed under 2-clause BSD license. See LICENSE file for full text.

What are most important SpecGine features?

At hearth of SpecGine is advanced state management system. It features:

  • States grouped into tree-structure hierarchy.
  • State stack and transitions between states.
  • Automatic and customizable loading screen and progress bar.
  • Transparent handling of persistent configuration, data exchange between states and assets using single, simple syntax.
  • Ability to access state just under active one on stack for easy state overlays.
  • Automatic state registration for input events when needed with support for easy extension for custom state types.
  • Separate constant length simulation steps and variable length rendering steps with optional interpolation support.
  • Ability to guess resource types based on file extensions with customizable default parameters and extension lists.

This state management system is accompanied by three already implemented states:

  • Game state which implements static, type-safe and reflection-free entity system with ready systems templates to process entities or their pairs.
  • Menu state with easy integration of various menu buttons with handles for custom background rendering.
  • Slide-show state to maximally simplify creation of non-interactive linear content, like intros, credits or cutscenes.

More features will come soon, but what is already here, paired with excellent LibGDX framework we depend on, allows you to make even advanced games.

What are hardware or software requirements to develop using SpecGine?

A relatively modern desktop computer running Java 7 or newer, equipped with graphics card capable to use OpenGL 2.1 is recommended. To get best results, you should use latest Java 7 directly from Oracle. Computer with Java 6 should also work, but we do not test our system for compatibility with developing on Java 6. Java version 5 or older are unsupported.

To develop for Android you will need Android SDK with Android Platform Tools, Android Build Tools and platform image for Android version you want to develop for.

Finally, if you want to develop for iOS platform you will need to use MacOS X and XCode, and acquire developer license from Apple (we would like to mention, that we are by no means associated with Apple, we do not resell licenses, nor provide any support to owners of developer license).

In all cases you will need the Simple Build Tool, SBT. Currently we recommend using version 0.12.4 for 0.1 branch and 0.13.5 for 0.2 branch.

Note: There is known issue with Android Build Tools version 19. It is fixed in versions 19.0.1 and higher, so we recommend updating to latest release of Android Build Tools.

What are hardware or sofrware requirements to play games made with SpecGine?

Requirements depend on platform you deploy to:

  • Any relatively modern desktop computer running Java 6 or newer equipped with graphics card supporting OpenGL 2.1.
  • Android devices with operating system in version 2.3.3 or higher and OpenGL ES 2.0 support.
  • iPad and iPhone devices, operating system in version 5 or higher and OpenGL ES 2.0 support.

How do I start using it?

Note: SpecGine 0.1.1 is compiled against Scala 2.10 and LibGDX 0.9.9. SpecGine 0.2-M1 is compiled against Scala 2.11 and LibGDX 1.2.0. You should use matching version of dependencies in your project.

To learn about SpecGine we recommend checking tutorial on our wiki and [API] docs for currently released version. You will also need to get the SpecGine itself. Here is how you can do it.

Getting from Central Repository

We publish to Central Repository. Add following lines to your main project libraryDependencies to depend on SpecGine. Notice, that macros package is only a provided dependency.

libraryDependencies ++= Seq(
  "com.specdevs" %% "specgine" % "0.1.1",
  "com.specdevs" %% "specgine-macros" % "0.1.1" % "provided"

or for milestone release:

libraryDependencies ++= Seq(
  "com.specdevs" %% "specgine" % "0.2-M1",
  "com.specdevs" %% "specgine-macros" % "0.2-M1" % "provided"

If you are using SBT android-plugin and experience problems running Android application, you can try using following libraryDependencies, which seem to work when above fails.

libraryDependencies ++= Seq(
  "com.specdevs" %% "specgine" % "0.1.1",
  "com.specdevs" %% "specgine-macros" % "0.1.1" exclude("org.scala-lang", "scala-reflect")

Creating locally published version

You can also build SpecGine and publish it into your local repository.

First, you need to get source code by cloning git repository:

git clone
cd specgine
git checkout v0.1.1 # or v0.2-M1

Then start sbt command (Simple Build Tool, a built tool popular for Scala projects). We recommend checking SBT documentation on how to get and run it on your platform. When you get working SBT, just issue command:


It will compile, package and publish SpecGine into your local repository, where projects on your machine will be able to find it. To depend on locally published SpecGine version, use same libraryDependencies as for Central Repository.

Getting JAR files manually

You can also download JAR files for engine and documentation manually and place them where your compiler can find them. We publish them here on bitbucket:

Do you publish snapshots of future releases?

Currently no, we do not publish snapshots of SpecGine, but it might change in future. For now, you are free to use procedure described in Creating locally published version above, just checkout current development branch instead of release tag.

I found a bug, what should I do?

If you find some bugs, mistakes in the code, on the page or documentation, we will be more than happy to accept a pull request from you. If you do not know how to fix the issue, get in touch with us. We recommend using Bugs section on our public Trello board. When we confirm the issue we will create a ticket for it on our bitbucket issue tracking system.

I miss a certain feature, what should I do?

Just ask! We also miss lots of features we plan to add in future versions. There is chance we are already working on similar feature and we can discuss our needs and ideas for it. It is best to write it on our public Trello board in Ideas section. If we decide to implement it, we will create ticket for it on our bitbucket issue tracking system.

I want to help, what can I do?

Of course if you asked yourself one of two earlier questions, and followed their answers, you were already of great help to us! But what else you can do?

First of all, help us spread the word! If you like our work, do not forget to tell about it to your friends. Even better if you run technology blog. If you already made some games or prototypes using SpecGine, we would be happy to hear about it, and if you agree, to put it on engine web page as a kind of showcase.

Finally, if you are interested in helping with development, we would like to ask you to get in touch with us, so we can discuss your contribution. Most likely we will include your changes to code, but as previously stated, SpecGine is part of our in-house technology stack, and we do not want it to diverge too much from original design, unless benefit will be viable or changes to our own code maintainable.

How do I find out news about developments in SpecGine?

You can star or follow this repository and our Trello board, or you can follow us on our Twitter account.

I do not like contacting by Trello, any other ways to get in touch?

Of course. While we prefer Trello to contact, because it allows us to get a glimpse at board and know what we have to do today, you can still use more traditional ways of contacting us. You can send us e-mail at address contact(at) or directly to team members, using scheme givenname.familyname(at) You can also get in touch by Tweeting to us.