Realtime strategy game for Gameboy Advance

Overview

Skyland

Overview

A Gameboy Advance game created, frantically, for a game jam, in about twenty days. A simple realtime strategy game where you build flying castles and fight AI players. Also includes a multiplayer vs mode.

I forked a top-down action game called Blind Jump to leverage some existing gba framework code that I'd written in the past for interfacing with the hardware, but most of the code is entirely new. For game-specific code, see the source/skyland directory, and the scripts directory, where you'll find all the various level scenarios as LISP code.

Controls, Mechanics, and other Info

Skyland has nuanced controls and mechanics, which I will describe below.

Islands

All of the action in the game takes place on flying castles. At most two islands comprise each level, where the player controls one island, and an AI controls the other island. Hostile fortresses will attack the player, while neutral or peaceful islands may give the player coins, items, or blocks.

Rooms

Each Island consists of a layer of terrain, atop of which the player can build structures. The game generalizes all structures as rooms, although not all rooms can be occupied (players cannot move characters into solid rooms, like cannons or walls, for instance).

To build new rooms, open up the construction menu by pressing the right bumper. You may then press A to select a construction site, and then scroll through a list of structures to build with the d-pad. Press A again to construct the selected room. The game may reject your request to build structures, if you have not collected enough coins, or have not constructed enough power cores to sustain the new addition.

You may also salvage and recover some value from existing rooms, by selecting the room with the cursor, and pressing B.

You may pause the game to make adjustments at any time, by pressing the left bumper. Pausing frequently does affect your highscore a bit though.

Press the select button to toggle the interior view of your castle.

See below for a complete annotation of all structures that you may build:


Hull

The simplest block in the game. A purely defensive structure. The only structure in the game that does not supply or deplete energy.


Cannon

For attacking other islands. Mainly used for attacking horizontally. Select a cannon and press A to choose a target. By default, the selector will move between targets sequentially (left to right, top to bottom), but you can tap the R bumper while choosing a target to detach and move the selector without constraint.


Missile Silo

For attacking other islands. Missiles will launch vertically, and fall down vertically on the other island. For attacking the top face of an island.


Stairwell

A tall room, with no function other than to allow your fortress' residents to move between blocks stacked on top of one another.


Infirmary

Heals each idle occupant controlled by the owner of the infirmary. Your characters will not heal while fighting an enemy. The health provided by the infrirmary will be distributed evenly across all occupants, so a player will heal more quickly if other characters are not attempting to heal at the same time.


Bulkhead

Select a bulkhead and press A to open/close. Four second recharge when the bulkhead changes state. Characters cannot walk through closed bulkhead doors. Use to limit invading enemy movement within your castle.


Workshop

A square room. Slightly lowers the cost of building all rooms, and allows you to build the more complex structures listed below.


Power Core

Your island will include one power core at the beginning of the game. If all of a castle's power cores are destroyed, it will sink into the clouds, and all of the island's residents will perish. You must have a workshop in your castle to build aadditional Power Cores. Each room on your island consumes an amount of power (with the sole exception of hull blocks, which consume no power). If the total power consumption of your island exceeds the combined power output of your power cores, all systems will shut down, until you salvage rooms to free up power, or until you build more power cores.


Forcefield

Almost identical to a Hull block, but consumes power, and your own weapons may shoot through forcefield blocks without damaging them. Mainly intended for protecting weapons (otherwise, you could just build Hull blocks). You must have a workshop to build a Forcefield.


Transporter

Allows you to transport one of your characters to another island. Move one of your characters into the transporter, select the transporter, and press the A button. Your character will be transported to a random room in the opponent's island. Transporters have a cool-down period, so you may need to build multiple transporters if you want to effectively raid enemy islands. By selecting an empty transporter, you may also retrieve characters on other islands. A light on the transporter tile image will change from red to blue when the transporter finishes recharging.


Radar

Allows you to see the interior of your opponent's structures. Fragile, and consumes a relatively large amount of power. You must have a workshop to build a Radar.


Ion Cannon

An energy weapon. Fires projectiles that pass through hull and rooms, and cause bulkhead doors to open. Deals significant damage to forcefields.


Flak Gun

Fires projectiles that deal small amounts of damage to large areas of a castle. Deals thirteen damage at the point of impact, ten damage to grid locations adjacent to the point of impact, and eight damage to grid locations one-tile-removed from the impact site.

          8
       8 10  8
    8 10 13 10 8
       8 10  8
          8

Rooms larger than one 16x16 tile will receive damage from each tile that overlaps with the blast radius.


Replicator

Produces replicants. Move one of your human characters into the replicator, select the replicator, and press A; the game will be give you the option to create a replicant. Replicants cannot heal in an infirmary, and have 75% of the health of the template character from which they were created.


Characters

Characters, such as your castle's residents, or enemy goblins, can damage or repair rooms. When successfully destroying another castle's room, a character will plunder a fraction of the room's construction cost, increasing your coin count.

Downloads

See here: https://github.com/evanbowman/skyland/releases

Hacking

If you want to mod the game, you can either manually build the SkylandEngine ROM from this repository, and then run the bundle script to attach the lisp code, or you can find the pre-compiled engine ROM here: https://github.com/evanbowman/skyland-baserom

You might also like...
Game Boy, Game Boy Color, and Game Boy Advanced Emulator
Game Boy, Game Boy Color, and Game Boy Advanced Emulator

SkyEmu SkyEmu is low level cycle accurate GameBoy, GameBoy Color and Game Boy Advance emulator that I have been developing in my spare time. Its prima

A cycle-accurate Game Boy and Game Boy Color Emulator, with rewind feature.
A cycle-accurate Game Boy and Game Boy Color Emulator, with rewind feature.

Azayaka is a free and open-source Game Boy and Game Boy Color emulator written in C++. Features Cycle-Accurate emulation. Console based Debugg

The Game Boy ROM of the Game Boy bitcoin miner!

game-boy-bitcoin-miner The Game Boy ROM of the Game Boy bitcoin miner! To build this, currently this patch needs to be applied to GBDK: https://gist.g

CLUSEK-RT is a complex game engine written in C++ and the successor of the CLUSEK game engine
CLUSEK-RT is a complex game engine written in C++ and the successor of the CLUSEK game engine

CLUSEK-RT is a complex game engine written in C++ and the successor of the CLUSEK game engine. This engine has been designed with a cross-platform design in mind. Thanks to Vulkan API it delivers a next-gen experience with ray tracing to both Linux and Windows platforms

Ground Engine is an easy to use Game Engine for 3D Game Development written in C++
Ground Engine is an easy to use Game Engine for 3D Game Development written in C++

Ground Engine is an easy to use Game Engine Framework for 3D Game Development written in C++. It's currently under development and its creation will b

Minetest is an open source voxel game engine with easy modding and game creation

Minetest is an open source voxel game engine with easy modding and game creation

A game made for the Game (Engineless) Jam using Raylib
A game made for the Game (Engineless) Jam using Raylib

Fastest Pizza Delivery A fun little 3D game made for the Game (Engineless) Jam. It is still is development but the basic gameplay is something l

SameBoy DX is a Qt-based interface of SameBoy, a free, highly accurate Game Boy and Game Boy Color emulator.

SameBoy DX SameBoy DX is a Qt-based interface of SameBoy, a free, highly accurate Game Boy and Game Boy Color emulator. Build requirements: CMake Pyth

To recreate the board game Scotland yard and  enable a single player to play the game by letting one of the roles being played by the computer based on written algorithm
To recreate the board game Scotland yard and enable a single player to play the game by letting one of the roles being played by the computer based on written algorithm

Scotland Yard GAME OF SCOTLAND YARD This is a custom version of the classic board game, Scotland Yard .The game uses the London map used in the origin

Comments
  • Patch: Add drone entities to skyland engine

    Patch: Add drone entities to skyland engine

    This patch adds Drones to SKYLAND adventure mode, extends the multiplayer messaging system to sync drone state changes, and extends the AI to coordinate drone placement and behavior.

    opened by evanbowman 0
  • Crash when finishing

    Crash when finishing "lemon tree" quest

    Love the game and I been playing it lately on my modded GBA with flash card everdrive x5 mini. The game crash with a red screen and show "invalid quest marker", need to reboot the game.

    • Version: https://skylandgame.io/beta/
    • Mode: adventure
    • Difficulty: Beginner
    • Location: Zone 1 or 2, right after reaching the X mark of the "Lemon tree delivery" quest
    • Scenario: I finish this quest a few time, crashed 2 times and 1 was success. In the success run of that quest I manage to preserve all of the tree. But the 2 times I crash was when I lost a few tree, not sure if it have anything to do with the crashing but that's all I could remember.

    Good luck with the game and I look forward to playing or buying the finish product.

    opened by DMeisei 9
Releases(beta)
  • beta(Nov 2, 2022)

  • 2022.1.7.0(Jan 7, 2022)

    EDIT: POSTSCRIPT: THIS RELEASE IS OUTDATED, GET THE BETA HERE: https://skylandgame.io/beta/download

    I found another bug in SKYLAND beta, introduced recently by accident. In the previous version, if you raid and plunder a power-core in an enemy castle, the AI will destroy the plundered-room structure that was produced when raiding the power-core structure, in an attempt to rebalance power usage. This kills any characters who happened to have plundered a power-core. Patch 2022.1.7.0 updates scripts/config.lisp to add an entry for plundered-room, so that it does not consume power, and will therefore not be destroyed by the AI player. Because the rooms.lisp script was missing an entry, the engine defaulted to a power usage of ten, which confused the AI.

    Source code(tar.gz)
    Source code(zip)
    Skyland.gba(2.90 MB)
  • 2022.1.4.1(Jan 5, 2022)

    Just the other day, I said I wouldn't do any more releases for a while. But now that I'm getting back into serious development for Skyland, I keep finding things to fix in the old beta version of the game. Ah well.

    I found an obscure bug where the game freezes if you beat a hostile level with two repair drones active, then enter a neutral level that spawns characters.

    I built this release from a newer development repository, so it includes some changes to the multiplayer session setup as well.

    Source code(tar.gz)
    Source code(zip)
    Skyland.gba(2.90 MB)
  • 2022.1.3.0(Jan 4, 2022)

  • 2022.1.2.0(Jan 2, 2022)

    I may not do any public releases for some time. Development will be moving to a private repository, and I will do a single large release later this year. This tag includes one final public release of the beta version of SKYLAND, with some significant changes:

    • Difficulty curve adjustment: levels yield more coins (1)
    • Builtin script editor, SRAM filesystem (2)
    • Adds drone-bay structures to the game (3)
    • Weapons display their reload time upon hover
    • flak-gun deals slightly more damage
    • Bugfixes
    • Hopefully not too many new bugs introduced :)

    (1) I adjusted the difficulty of the game further by increasing the number of coins yielded after defeating an enemy. (2) The game now allows you to edit level scripts from within the game itself. There is no documentation for the game's script API yet, though. I will need to write some docs before the script editor would be very useful to anyone. Open /rom/help/editor_keys.lisp from SKYLAND's file browser for a description of the button mappings for the editor. NOTE: if you mess up a script somehow, navigate to the script in SRAM, press start, and select delete. (3) The drone-bay allows you to deploy a drone around the periphery of an opponent's castle. Drones cannot be targeted by a castle's weapons, but will take damage if placed in the pathway of a weapon. cannon-drone and flak-drone behave similarly to cannon and flak-gun structures, respectively. The combat-drone is designed for attacking other drones, and is currently the only weapon that can target a drone directly. If a player destroys a drone-bay, the drone deployed from that drone-bay, if any, will also be destroyed.

    skyland_drones

    Source code(tar.gz)
    Source code(zip)
    Skyland.gba(2.89 MB)
  • 2021.11.20.0(Nov 20, 2021)

    A minor release, for most users. No gameplay changes.

    Introduces major changes, though, to the game's lisp interpreter. Skyland LISP now supports macros, quasiquote, unquote, and unquote-splicing, allowing for advanced metaprogramming in the game's symbolic expression evaluator.

    Additionally, I've rendered compiled Skyland LISP bytecode completely portable across architectures. The project now includes a standalone command-line compiler and disassembler for Skyland LISP. I plan on creating lots of DLC for this game in the form of e-reader cards, so compact and portable bytecode is a major achievement.

    Eventually, I will resume working on new gameplay features. Lately, I've been working on improvements to the game's engine in preparation for some hopefully substantial new features.

    I want the final release of the game to be really hackable for people who want to create mods and extensions. Eventually, I would like for practically all in-game events, as well as entity behavior, damage, parameters, etc. to be script-able in Skyland's lisp interpreter.

    Source code(tar.gz)
    Source code(zip)
    Skyland.gba(2.86 MB)
  • 2021.11.13.0(Nov 13, 2021)

    • Flak gun deals more damage
    • Script console available in-game, by holding the start button for a second and then releasing.
    • Added text to tips&tricks menu to inform players about the tutorial viewer on the extras titlescreen page
    Source code(tar.gz)
    Source code(zip)
    Skyland.gba(2.86 MB)
  • 2021.11.12.0(Nov 13, 2021)

    • Bugfix for an obscure issue where a flag overwrites other tiles when a room floats one tile above a roof tile.
    • Bugfix for a graphical issue where missile sprites sometimes wrap around to the bottom of the screen for a frame or two.
    • Difficulty curve adjustment: levels give you more coins
    • Score calculation adjustments
    • Salvage changes: salvaged rooms give you less coins if a room is damaged; coin yield reduced proportionally to the amount of damage.
    • Major lisp interpreter changes: recursive tail call optimization for compiled bytecode, lexical scope, closures, more convenient function argument syntax.
    Source code(tar.gz)
    Source code(zip)
    Skyland.gba(2.86 MB)
  • 2021.10.29.1(Oct 29, 2021)

  • 2021.9.21.0(Sep 22, 2021)

  • 2021.8.27.0(Aug 27, 2021)

  • 2021.8.8.1(Aug 8, 2021)

    • Bugfixes
    • Multiple game speed options

    I've been working on adding sound effects and music to the game. The music is not ready yet, but I created a small release to fix a few bugs. Also, the game now allows you to hold the pause button, and select from multiple different game speeds: paused, slow (1/2x), normal, fast (2x).

    Source code(tar.gz)
    Source code(zip)
    Skyland.gba(1005.36 KB)
  • 2021.7.21.0(Jul 21, 2021)

  • 2021.7.20.0(Jul 20, 2021)

  • 2021.7.15.0(Jul 15, 2021)

  • 21.7.10(Jul 11, 2021)

  • 21.7.9(Jul 9, 2021)

  • 21.7.8.2(Jul 9, 2021)

Owner
Evan Bowman
Software Engineer. Formal background in computer engineering and visual art. I like programming gameboys. On hiatus while teaching myself copper plate etching.
Evan Bowman
Symphony of the Empires is a RTS strategy game.

Symphony of the Empires Want to contribute or are interested in the development of the game? See our discord https://discord.gg/44QuvuDmCS Yeah, we al

null 85 Jan 6, 2023
Perimeter is a real-time strategy video game with unique gameplay elements such as terraforming deformable terrain, morphing units, energy network, protective shield and surreal worlds.

Периметр | Perimeter About Perimeter is a real-time strategy video game with unique gameplay elements such as terraforming deformable terrain, morphin

null 414 Dec 27, 2022
civilized Game Boy Advance development from the comfort of your own editor

Rath - civilized Game Boy Advance development from the comfort of your own editor what is it Rath is an interactive development environment for the Ga

Ties Stuij 25 Dec 12, 2022
A gameboy emulator that only plays Pokemon Blue, in ~70 lines of c++.

pokegb A gameboy emulator that only plays Pokemon Blue, in ~70 lines of c++. See the technical write-up. Features Plays Pokemon Blue (and Red).

Ben Smith 1.2k Jan 8, 2023
DMGPlus, upgraded internals for the original GameBoy

These are various files for the DMGPlus project. Note that I did this over the time span of about three years, so there's no plug-and-play recipe to b

Jeroen Domburg 14 Dec 19, 2021
Gameboy Port of LazyDevs' Porklike

porklike.gb A port of the wonderful Porklike, created by Krystian Majewski, to the original Game Boy! Please see the original pico-8 game at https://k

Ben Smith 20 Dec 28, 2022
A gameboy emulator in several different languages

A gameboy emulator in several different languages

Shish 327 Dec 31, 2022
Distributed server for social and realtime games and apps.

Distributed server for social and realtime games and apps. Features Users - Register/login new users via social networks, email, or device ID. Storage

Heroic Labs 6.6k Jan 1, 2023
Improved version of the X-Ray Engine, the game engine used in the world-famous S.T.A.L.K.E.R. game series by GSC Game World.

OpenXRay OpenXRay is an improved version of the X-Ray Engine, the game engine used in the world-famous S.T.A.L.K.E.R. game series by GSC Game World. S

null 2.2k Jan 1, 2023
Stealthy way to hijack the existing game process handle within the game launcher (currently supports Steam and Battle.net). Achieve external game process read/write with minimum footprint.

Launcher Abuser Stealthy way to hijack the existing game process handle within the game launcher (currently supports Steam and Battle.net). Achieve ex

Ricardo Nacif 80 Nov 25, 2022