Project Setup - Rombusevil/flixel-gdx GitHub Wiki
Note - This guide assumes you already have Eclipse and the Android SDK installed and working on your computer. If not, follow this first: http://developer.android.com/sdk/index.html
flixel-gdx now comes with a gui utility to help simplify the setup process. We would recommend this option for most users.
- Download the latest "setup-ui" jar here: http://flixel-gdx.org/dist/setup-gui.jar
- Run the jar by double clicking on it.
- Specify your projects properties using the text fields.
- Click "Open the generation screen".
- Click "Launch" to start downloading the required libraries and automatically set up your projects.
- Open Eclipse and import the generated projects into your workspace:
- File -> Import -> Existing Projects into Workspace
- Click "Browse", select the folder containing the generated projects.
- Make sure all the projects are checked, then click "Finish"
- Desktop: Right click the desktop project, Run As -> Java Application. Select the desktop starter class (e.g. Main.java).
- Android: make sure you have either a device connected or an emulator installed. Right click your Android project, Run As -> Android Application.
If you want to be able to edit the source code of flixel-gdx, you will need to checkout the most recent revision from the Git repository and set up your project manually.
- Use Git to checkout the latest revision from our github page, or download the project as a zip file.
- Run fetch.xml (located in the root directory) to fetch the required dependencies.
- Once done, open Eclipse and import the projects into your workspace:
- File -> Import -> Existing Projects into Workspace
- Click "Browse", select the folder containing the projects
- Make sure all the projects are checked, then click "Finish"
Note: Java 1.7 is currently problematic in combination with Android. Please make sure your project uses Java 1.6
- Create a new Java project in Eclipse: File -> New -> Project -> Java Project. Give it a name and click Finish.
- In Eclipse, right click the project -> Properties -> Java Build Path -> Projects -> Add... -> select flixel-core and click OK.
- Create a new Java project in Eclipse: File -> New -> Project -> Java Project. Name it appropriately (eg, "gamename-desktop") and click Finish.
- In Eclipse, right click the project -> Properties -> Java Build Path -> Projects -> Add... -> select flixel-desktop AND your core project and click OK.
- Create a new Android project in Eclipse: File -> New -> Project -> Android Project. Name it appropriately (eg, "gamename-android"). For build target, check "Android 1.5". Specify a package name (eg, "com.gamename"). Next to "Create Activity" enter "AndroidGame". Click Finish.
- In Eclipse, right click the project -> Properties -> Android. In the Library section click on Add..., select flixel-android and click OK.
- Still in Properties, go to Java Build Path -> Projects -> Add... -> check your core project and click OK.
- Click the Order and Export tab, check your core project.
You need to install GWT Plugin and SDK for Eclipse: https://developers.google.com/eclipse/docs/download
- Create a new GWT project in Eclipse: File -> New -> Project -> Web Application Project. In the setup menu uncheck “Use Google App Engine” and “Generate project sample code”. Give it a packname e.g. “com.yourname.flixelgame”.
- In Eclipse, right click the project -> Properties -> Java Build Path -> Projects -> Add… -> select flixel-html5 AND your core project and click OK.
The Android project has a subfolder named assets, which was created automatically. Files available to the Android application must be placed here. This is problematic, because these same files must be available to the desktop application. Rather than maintain two copies of all the files, the desktop project can be configured to find the assets in the Android project:
- In Eclipse, right click your desktop project -> Properties -> Java Build Path -> Source tab.
- Click Link Source, Browse, select the "assets" folder from your Android project and click OK.
- Specify "assets" for the folder name and click Finish then OK.
Note: If your desktop and Android projects are in the same parent folder, you can use "PARENT-1-PROJECT_LOC/gamename-android/assets" for the location of the linked assets folder, where "gamename-android" is the name of your Android project. This is better than a hardcoded path if you plan on sharing your projects with others.
- In your core project, create a new class (right click the project -> New -> Class). Name it
PlayState
and specify a package. Set its superclass toFlxState
and click OK. - Create another new class. Name it
Game
, set its superclass toFlxGame
and click OK. - Add a constructor to the
Game
class so that it looks like this:
package com.yourname.flixelgame;
import org.flixel.FlxGame;
public class Game extends FlxGame
{
public Game()
{
super(400, 240, PlayState.class, 2);
}
}
- Right click the desktop project -> New -> Class. Name it
DesktopGame
and specify a package (eg, "com.gamename"). Click OK. Make the class look like this:
package com.yourname.flixelgame;
import org.flixel.FlxDesktopApplication;
public class Main
{
public static void main(String[] args)
{
new FlxDesktopApplication(new FlixelGame(), 800, 480);
}
}
- To run the game on the desktop, right click the project -> Debug As -> Java Application. You should get a black window.
- Open the
AndroidGame
class in the Android project that was automatically created and make it look like this:
package com.yourname.flixelgame;
import org.flixel.FlxAndroidApplication;
public class AndroidGame extends FlxAndroidApplication
{
public AndroidGame()
{
super(new Game());
}
}
- To run the game on Android, right click the project -> Debug As -> Android Application. The screen will turn black, since the game doesn't yet do anything. If any errors occur running the application, they show up in the Logcat view, which can be seen by clicking Window -> Show View -> Other -> Android -> Logcat.
- Right click in the GWT project -> new Class. Name it
GameStarter
and put it in thecom.yourname.flixelgame
package. Click OK. Make the class look like this:
package com.yourname.flixelgame;
import org.flixel.FlxGame;
import org.flixel.client.FlxHtml5Application;
public class GameStarter extends FlxHtml5Application
{
public GameStarter()
{
super(new FlixelGame(), 800, 400);
}
}
- Right click in GWT project -> File. Name it
gamestarter_html5.gwt.xml
. Put it incom.yourname
. Make the xml look like this:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.5.1//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.5.1/distro-source/core/src/gwt-module.dtd">
<module rename-to="com.yourname.gamestarter_html5">
<!-- inheritances. If you use 3rd parties libaries, you need to include them here -->
<inherits name="com.yourname.flixelgame" />
<inherits name="org.flixel.flixel_html5" />
<!-- Your main class -->
<entry-point class='com.yourname.flixelgame.GameStarter' />
<!-- Assets folder, which is in your Android project -->
<set-configuration-property name="gdx.assetpath" value="../gamename-android/assets" />
<!-- The PlayState is one of your class that needs to be included in the reflection -->
<!-- If you've other classes that uses Reflection, include them here -->
<extend-configuration-property name="gdx.reflect.include" value="com.yourname.flixelgame.PlayState" />
</module>
For every inheritance you need a .gwt.xml
file. In this example there are two inheritances:
<inherits name=”com.yourname.flixelgame” />
<inherits name=”org.flixel.flixel_html5” />
flixel_html5.gwt.xml
is already created. You can find it in flixel-html5/src/org/flixel
. For your own project you need to create it by yourself. Right click the core project -> File. Name it flixelgame_core.gwt.xml
. Put it in the com.yourname
package. Make the xml look like this:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.5.1//EN"
"http://google-web-toolkit.googlecode.com/svn/tags/2.5.1/distro-source/core/src/gwt-module.dtd">
<module>
<source path="flixelgame"/>
</module>
The source path is the path to the classes. We put the flixelgame_core.gwt.xml
file in com.yourname
, this means the classes will be in flixelgame folder.
- To run the game, right click the project -> Run as -> Web Application. In the Development Mode tab there will be a link. Copy this link and paste in Chrome. If Chrome asks for the GWT Developer Plugin, install it. After this your game will run in the browser. You’ll notice that the game will run very slow, because it’s in debug mode.
Compile the project, right click the project -> Google -> GWT Compile -> click on Compile. Default the compiled files will be in the war folder of the GWT project. Put the files on a server. Navigate to the html file. The game should run at full speed.
To speed up the compile time you optimize the *gwt.xml
file file as follows:
<set-property name="user.agent" value="safari"/>
This will only compile for browsers with the user agent Safari (Safari and Chrome). Available user agents can be found here: https://gwt.googlesource.com/gwt/+/master/user/src/com/google/gwt/useragent/UserAgent.gwt.xml
In GWT Compile you can add the following arguments:
-draftCompile | Enable faster, but less-optimized, compilations. |
-localWorkers | The number of local workers to use when compiling permutations. If you got 4 CPU, -localWorkers 4. |
-XdisableCastChecking | EXPERIMENTAL: Disables run-time checking of cast operations |
-Xmx1024m | Tweak the memory that will be available when compiling. |
Take a look at the screenshot for an example: