This is the easiest way to make changes to the game. At any point while playing the game you can open a text/image editor (by default with Ctrl-t/Ctrl-i respectively) and change the texts/images currently shown in the game. You can add/change/delete alternatives. If there is more than one alternative the game will randomly pick one of them.
When you make text changes, don't forget to push the "Save" button. Changes you make in the image editor are saved automatically.
The changes you make are immediately visible in the game and they are stored in the "mod" directory.
If you would like to share your changes with others and get them integrated in the main game, just zip up your "mod" folder and post it on the Futanaripalace message board. Once all your changes are integrated in main game, you can delete your "mod" folder.
An event editor is being worked on that will let you create new events from within the game.
All the required software is freely available for all common computer platforms (Windows/Mac/Linux).
The game is written in Java using Eclipse as IDE, git for SCM and github to exchange sources between game developers.
public class Startscreen extends EventNode<NullState> { public static enum Text implements TextKey { AIRPORT_DESCRIPTION, OPTION_ENTER_BUS, OPTION_SKIP_INTRO; } @Override protected ImgChange updateImageArea() { return ImgChange.setBG(IntroImage.AIRPORT); } @Override protected void doEvent() { setText(Text.AIRPORT_DESCRIPTION); addOption(Key.OPTION_ENTER, Text.OPTION_ENTER_BUS, new Bus()); addOption(Key.OPTION_LEAVE, Text.OPTION_SKIP_INTRO, new Plane1_YourSeat()); } }to
public class Startscreen extends EventNode<NullState> { public static enum Text implements TextKey { STARTSCREEN_DESCRIPTION, OPTION_START; } @Override protected ImgChange updateImageArea() { return ImgChange.setBG(IntroImage.STARTSCREEN); } @Override protected void doEvent() { setText(Text.STARTSCREEN_DESCRIPTION); addOption(Key.OPTION_ENTER, Text.OPTION_START, new Airport()); } }and save Startscreen.java
Beautifications of the map should be made to this one-image version from which the in-game map is derived. Creating the game resources from the "one-image" version is currently a manual process and takes ~1 hour, so any improvements to the map should worth the effort.
In-game the map is cut into tiles. To the player the map will always look like one continuous map, but in reality the will only ever be tiles which are 4 times as large as what's visible on screen.One of the black rectangles in the above image is the size of what's visible on screen at a time, but the map will always be centered on the current location/path, so it looks continuous to the player. The coordinate (0,0) is where the top-most and left-most black lines meet. Some other coordinates have been drawn into the image to illustrate how the coordinate system works.
When the player first enters the island map, it's on tile (0,3). Every location delimited by the rectangle (0,3), (1,3), (0,4), (1,4) uses this tile as the background image. The red rectangle shows the actual size of tile (0,3).
The formula is:If you want to change an existing location or add a new one, the whole tile business does not concern you. All you have to do is: open LuckySurvivor/src/map.Map and add/modify a line like this:
public class Map extends EventNode<NullState> { public static enum Location implements TextKey, ImageKey { CRASH_SITE(0.55, 3.45, new StaticEventFactory(MapToCrashSite.class)), CLIFF_WEST(0.45, 3.35, new StaticEventFactory(MapToCliffWest.class)), JUNGLE_1_UPHILL(0.65, 3.25, new StaticEventFactory(MapToJungle1Uphill.class)), ...The first two numbers in the Location constructor (e.g. the "0.55" and "3.45" after "CRASH_SITE(") are the x and y coordinates of the location. The game engine will take care of the rest. If you add an Image for the Location, this image will be used to draw the location. Note: Location images must have both a "Scale X" and a "Scale Y" value. Otherwise an X will be drawn.