All Projects โ†’ rootVIII โ†’ skulls

rootVIII / skulls

Licence: GPL-2.0 license
๐Ÿ’€ ๐Ÿ’€ ๐Ÿ’€ s k u l l s ๐Ÿ’€ ๐Ÿ’€ ๐Ÿ’€

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to skulls

Poketraveler
Let's walk through Pokemon World!
Stars: โœญ 110 (+214.29%)
Mutual labels:  2d-game
Openpokemonred
WIP: An open-source re-implementation of Pokรฉmon Red
Stars: โœญ 168 (+380%)
Mutual labels:  2d-game
newbark-unity
๐ŸŒณ A proof-of-concept Pokรฉmon-style Retro RPG game framework created with Unity ๐Ÿ”ฅ๐ŸŒฟ๐Ÿ’งโšก๏ธ
Stars: โœญ 139 (+297.14%)
Mutual labels:  2d-game
Gizmo
2D Pixel Destruction Game written in Go.
Stars: โœญ 114 (+225.71%)
Mutual labels:  2d-game
Kaetram Open
An open-source 2D HTML5 adventure based off BrowserQuest (BQ).
Stars: โœญ 138 (+294.29%)
Mutual labels:  2d-game
Egregoria
Contemplative society simulation
Stars: โœญ 219 (+525.71%)
Mutual labels:  2d-game
Elm 2d Game
A small rendering engine for creating 2d games with elm, based on WebGL.
Stars: โœญ 94 (+168.57%)
Mutual labels:  2d-game
LOL2D-ver1
League Of Legends in 2D - Web Game
Stars: โœญ 27 (-22.86%)
Mutual labels:  2d-game
Gf
A C++14 framework for 2D games
Stars: โœญ 154 (+340%)
Mutual labels:  2d-game
PixelDot
Godot plugin for making 2D sandbox games like Terraria and Starbound.
Stars: โœญ 57 (+62.86%)
Mutual labels:  2d-game
Gamedev Resources
๐ŸŽฎ ๐ŸŽฒ A wonderful list of Game Development resources.
Stars: โœญ 2,054 (+5768.57%)
Mutual labels:  2d-game
Newbark
๐ŸŒณ A proof-of-concept Pokรฉmon-style Retro RPG engine created with Unity.
Stars: โœญ 129 (+268.57%)
Mutual labels:  2d-game
Gdevelop
๐ŸŽฎ GDevelop is an open-source, cross-platform game engine designed to be used by everyone.
Stars: โœญ 3,221 (+9102.86%)
Mutual labels:  2d-game
Flutter Galaxy Game
2D Flutter Galaxy Game
Stars: โœญ 111 (+217.14%)
Mutual labels:  2d-game
goblins-game-gd
Turn based strategy game made with Godot Engine.
Stars: โœญ 68 (+94.29%)
Mutual labels:  2d-game
Badsanta
BadSanta - Multiplayer HTML5 Game (http://santa.qake.se)
Stars: โœญ 97 (+177.14%)
Mutual labels:  2d-game
Classic Pool Game
Classic 8 Ball pool game written in JavaScript
Stars: โœญ 177 (+405.71%)
Mutual labels:  2d-game
ray engine
A toy raycasting engine in Go + Ebiten
Stars: โœญ 19 (-45.71%)
Mutual labels:  ebiten
Nero-Game-Engine
Advanced SFML Game Engine, Designed to be Simple and Intuitive
Stars: โœญ 50 (+42.86%)
Mutual labels:  2d-game
Endless Sky
Space exploration, trading, and combat game.
Stars: โœญ 3,357 (+9491.43%)
Mutual labels:  2d-game

Skulls! A simple Columns-like strategy game developed in Golang with the Ebiten library (for Android)

Google Play Store

ex1


ex2


  • The game was developed as a POC to experience creating a simple game with Go/deploying it to Android
  • The Ebiten library for Golang was used to create the game
  • go-inovation was used as a guide for the ebitenmobile .aar binding
  • All development/debugging was done with the gomobile tool and adb
  • Android Studio should be downloaded/installed; the AVD emulators are free and convenient
  • I use the AVD emulators that are installable with Android Studio and stored in
    $ANDROID_HOME/emulator/emulator
  • It may be helpful to store an alias in your profile to open an emulator via a simple command:
    alias pixel4='$ANDROID_HOME/emulator/emulator -avd "Pixel_4_API_30"'
  • Font used for text: RADIOLAND.TTF
  • All assets/ (images, audio, and font) were converted to []byte using file2byteslice
  • The project is intended to be built with gomobile for development and testing, or with ebitenmobile for production releases using Android Studio
Build .apk for development and testing using gomobile:
  
// 1. Navigate to skulls/ and generate a .apk with gomobile:
gomobile build -target=android github.com/rootVIII/skulls/skullsgomobile



// 2. Install the newly created .apk into an already running Android Emulator:
adb -s <emulator-name> install skullsgomobile.apk

// Note: to list available emulators (including phone connected for debugging):
adb devices -l



// 3. View debug/logging output from the game:
adb logcat
  

Build .aar for Android Studio binding and production release using ebitenmobile:
  
// 1. Navigate to skulls/ and generate the .aar binding:
ebitenmobile bind -target android -javapkg com.<your-username>.skulls -o skulls.aar github.com/rootVIII/skulls/skullsebitenbind



// 2. Create a new Android Studio project (choose Empty Activity) and name it SkullsMobile



// 3. Import the new .aar as a module:
// Select File, New, New Module, Import .jar/.aar Package, select the previously built .aar named skulls.aar
// In app/build.gradle, add this line to the dependencies: compile project(':skulls')
// Example:

dependencies {
    implementation 'androidx.appcompat:appcompat:1.3.0'
    implementation 'com.google.android.material:material:1.3.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
    compile project(':skulls')
}
// Then follow screen prompts to sync the build.gradle change to the project



// 4. Place the following in app/src/main/java/com.<your username>.skullsmobile/MainActivity.java:

package com.<your-username>.skullsmobile;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import go.Seq;
import com.<your-username>.skulls.skullsebitenbind.EbitenView;


public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Seq.setContext(getApplicationContext());
    }

    private EbitenView getEbitenView() {
        return (EbitenView)this.findViewById(R.id.ebitenview);
    }

    @Override
    protected void onPause() {
        super.onPause();
        this.getEbitenView().suspendGame();
    }

    @Override
    protected void onResume() {
        super.onResume();
        this.getEbitenView().resumeGame();
    }
}



// 5. Add a separate error handling class in app/src/main/java/com.<your-username>skullsmobile/EbitenViewWithErrorHandling.java

package com.solsticenet.skullsmobile;

import android.content.Context;
import android.util.AttributeSet;

import com.<your-username>.skulls.skullsebitenbind.EbitenView;


class EbitenViewWithErrorHandling extends EbitenView {
    public EbitenViewWithErrorHandling(Context context) {
        super(context);
    }

    public EbitenViewWithErrorHandling(Context context, AttributeSet attributeSet) {
        super(context, attributeSet);
    }

    @Override
    protected void onErrorOnGameUpdate(Exception e) {
        // You can define your own error handling e.g., using Crashlytics.
        // e.g., Crashlytics.logException(e);
        super.onErrorOnGameUpdate(e);
    }
}



// 6. Add the below into app/src/main/res/AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/background_material_dark"
    android:keepScreenOn="true"
    android:screenOrientation="portrait"
    tools:context="com.<your-username>.skullsmobile.MainActivity">

    <com.<your-username>.skullsmobile.EbitenViewWithErrorHandling
        android:id="@+id/ebitenview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:focusable="true" />
</RelativeLayout>



// 7. The game should now be usable in Android Studio (sign the project with developer keys, UI adjustments in AndroidManifest.xml etc.)
  

This was developed on macOS Big Sur.


Author: rootVIII 2021

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].