Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Fahien

26
Posts
1
Topics
39
Followers
65
Following
A member registered Oct 10, 2015 · View creator page →

Creator of

Recent community posts

Beautiful game. It expects good precision though!

Thank you for trying it on waterfox!

I must admit, I do not think it is a kind of error related to the game or even the engine. It could be a waterfox issue or an emscripten issue. Hopefully it will be fixed in the future!

A danger sign, Mmh. Would it be nicer a simple shadow instead, which is small at the beginning, growing in size as the meteor approaches the ground?

I love interpreting the pipes, it makes me feel channeling! Night mode is adrenaline-filled.

Amazing interpretation of the theme. I love the atmosphere, the colors, the music, and the drawings are so cool! That distracted me from focusing on my tasks as an NPC and I got fired..

(1 edit)

It needed time to be implemented! So, I did not care and went ahead, lol.

Simpatico gioco, mi piace molto il fatto di poter cambiare classe. L'ho trovato pero' un po' difficile. Avrei scelto un sistema di input diverso, tipo WASD per il movimento. 

Nota positiva lato tech dato che si vede bene su tutte le piattaforme.

I did not manage to finish this game, ARGH! Quite entertaining, though.

Un po' lunga la parte introduttiva. Molto divertente in verità. Forse si poteva spezzettare tra un match e l'altro? Tutto sommato carino, fatto molto bene, intuitivo!

Molto bello! Un casino i comandi, a tratti un po' frustranti. Avrei preferito il classico pulsante premi e succede la cosa. È stato difficile uccidere il boss, ma ce l'ho fatta, sukamehamela.

Adoro tutto di questo gioco.

Fantastico il fatto di poter attivare il tempo con la voce. Mi ritrovo a dire "go", "jump", "shoot", per fare le cose, ma poi non clicco e non premo pulsanti e muoio. Hahaha.

Carina la totale randomizzazione degli elementi del gioco, ma forse un po' troppo, perché alla fine mi sono concentrato solo sui numeri. Mi piace il personaggio!

Giochino simpatico. Un po' difficile da capire come si gioca, ma dopo aver cliccato un po' a caso, sono riuscito a macellare tutte le mucche e abbattere gli alberi. Dopo aver messo tutto nelle fornaci volanti ho caricato tutto nel camion che è partito senza aspettare che finissi.

Veramente bello, professionale. Si vede che Havana è un esperto. Il gioco è studiato bene e se perfezionato è quasi vendibile.

So cool, I've finished it twice!

I enjoyed the atmosphere, sounds and lights are masterful, and really I felt cold while playing this game.

Entertaining houmor, pleasant text speech, well designed camera.
Well done, space courier.

(1 edit)

Space Float

Another month compressed in an archive.

Source code

If you want to look at the code, here is the repository on github.

Conclusion

Well, enjoy the game and tell us your opinions. If you like, you can vote for our entry at this link.

I would thank pasto for this outstanding month.
I leave with the last devlog.

Audio

The reproduction of sound effects in Space Float is performed via the singleton enum Audio. It has the attributes float volume and boolean mute, useful to manage audio centrally.

Through the methods play(Sound) and play(Sound, float) you can play sounds, respectively at default or specific volume.

private float volume = 1.0f;
private boolean mute = false;

public void play(Sound sound) {
    play(sound, volume);
}

public void play(Sound sound, float volume) {
    if (!mute) sound.play(volume);
}

If necessary, it is possible to loop a sound effect through the method loop(Sound) and stop playback through the method stop(Sound).

public void stop(Sound sound) {
    sound.stop();
}

public void loop(Sound sound) {
    if (!mute) sound.loop();
}
(2 edits)

The Game Screen

You could find a better formatted version of this devlog at this link

The Game Screen is the most important of SpaceFloat because it shows the 3D world with which the player can interact. It makes use of the powerful Ashley Engine that helps significantly reduce the complexity of the system.

This Screen creates all the systems it needs within its constructor.

private ReactorController reactorController;
private BulletSystem bulletSystem;
private CameraSystem cameraSystem;
private RenderSystem renderSystem;

public GameScreen() {
    reactorController = new ReactorController();
    bulletSystem = new BulletSystem();
    cameraSystem = new CameraSystem();
    renderSystem = new RenderSystem();
}

Like all SpaceFloat Screens, when the show method is called, all the Game Screen dependencies have already been initialized, so it can inject the last dependencies into the systems, add these systems to the Engine and finally create the HUD.

@Override
public void show() {
    injectSystemsDependencies();
    addSystemsToEngine(getEngine());
    createHud(getStage());
}

private void injectSystemsDependencies() {
    Camera mainCamera = getCamera();
    cameraSystem.setCamera(mainCamera);
    renderSystem.setCamera(mainCamera);
    ParticleSystem particleSystem = getParticleSystem();
    reactorController.setParticleSystem(particleSystem);
    renderSystem.setParticleSystem(particleSystem);
}

private void addSystemsToEngine(Engine engine) {
    engine.addSystem(reactorController);
    engine.addSystem(bulletSystem);
    engine.addSystem(cameraSystem);
    engine.addSystem(renderSystem);
}

public void createHud(Stage stage) {
    HudFactory factory = new HudFactory();
    stage.addActor(factory.getFpsActor());
    stage.addActor(factory.getVelocityActor());
    stage.addActor(factory.getAccelerationActor());
    stage.addActor(factory.getEnergyActor());
}

Eventually, the update method becomes nothing more simple:

@Override
public void update(float delta) {
    super(delta);
    engine.update(delta);
}

To follow the pattern of previous posts, I conclude with an image of the HUD elements!

SpaceFloat HUD

The Loading Screen

You could find a better formatted version of this devlog at this link

A fundamental use case of the asset manager is in the LoadingScreen. With this tecnique you can load all assets within a directory while showing progress.

public class LoadingScreen extends SpaceFloatScreen {

    private static final String TEXTURE_DIRECTORY = "textures/";
    private AssetManager assetManager;
    private float progress;

    @Override
    public void show() {
        super.show();
        assetManager = getAssetManager();
        FileHandle[] files = Gdx.files.local(TEXTURE_DIRECTORY).list();
        for(FileHandle file : files) {
            assetManager.load(file.path(), Texture.class);
        }
    }

    @Override
    public void render(float delta) {
        assetManager.update();
        progress = assetManager.getProgress();
        logger.info("Loading assets: " + progress);
        if (progress < 1.0f) return;
        SpaceFloat.GAME.setScreen(ScreenEnumerator.MAIN);
    }
}

I'm also glad to show you the new cargoship which you drive in SpaceFloat!

SpaceFloat cargoship

(1 edit)

SpaceFloat Asset Management

SpaceFloat uses an instance of the AssetManager provided by libGDX to manage assets. This instance follow the lifecycle of the SpaceFloatGame instance and it is injected into the Screens as a dependence.

public class SpaceFloatGame extends Game {

    private AssetManager assetManager;

    public SpaceFloatGame() {
        assetManager = new AssetManager();
    }

    // ...

    @Override
    public void dispose() {
        assetManager.dispose();
    }
}

I will show you a fundamental use case in the next devlog presenting the LoadingScreen.

(1 edit)

I'm glad to announce that the codename for the FastTeam's entry is SpaceFloat and it will be a game about a delivery service in the space!

I'm going to continue these devlogs writing about some practices I use with libGDX. So, here is a devlog about the SpaceFloat screen management.

SpaceFloat Screen Management

You could see a better formatted version of this devlog at this link.

SpaceFloat is divided in well-defined screens encapsulated in the ScreenEnumerator, so it's very simple to retrieve a singleton of a screen: ScreenEnumerator.INFO.getScreen();.

public enum ScreenEnumerator {
    INFO(new InfoScreen()),
    MAIN(new MainScreen()),
    LOADING(new LoadingScreen());

    private SpaceFloatScreen screen;

    ScreenEnumerator(SpaceFloatScreen screen) {
        this.screen = screen;
    }

    public SpaceFloatScreen getScreen() {
        return screen;
    }
}

The SpaceFloatGame class, subclass of Game, is responsible of the application life-cycle, including the current screen. A screen is initialized within the method setScreen(ScreenEnumerator) which, if the screen is not yet initialized, will invoke injectDependencies(SpaceFloatScreen) to inject all required dependencies.

public void setScreen(ScreenEnumerator screenEnumerator) {
    SpaceFloatScreen screen = screenEnumerator.getScreen();
    if (!screen.isInitialized()) injectDependencies(screen);
    setScreen(screen);
}

private void injectDependencies(SpaceFloatScreen screen) {
    screen.setAssetManager(assetManager);
    screen.setFont(font);
    screen.setEngine(engine);
    screen.setGame(this);
    screen.setInitialized(true);
}

Hi! Here are Fahien and pasto, aka the FaSTeam!

The first devlog isn't strictly related to the game we are going to create, but it is about a tool which I think would be useful.

During the preparations for the jam, the team needed to test the effectiveness of its work by creating a prototype application which involves the use of libGDX and Blender.

ProtoFast is the codename of this project. The final product is a simple application which shows a three-dimensional model through a camera movable via mouse or touch screen.

Practically, ProtoFast creates a list of models contained in the local models/ folder. If there are no models in the local folder, it searches in the internal models/ folder. The showcase screen loads the first model from the list and renders it. You can load the next or previous model through the arrows.

Screenshots

The models shown in the screenshots are made by pasto.

Earth

Spaceship

(3 edits)

Hello!

I'm Antonio, alias @Fahien, CompSci student and enthusiast gamedev. This is the second GameJam in which I use libGDX to develop a game. The former was this.

I don't work alone. As I write code, pasto creates spaceships, asteroids, missiles, bombs, etc. We will use Android Studio, Blender, GIMP, Audacity and I do not know what more.

Well, I'm just a student and english isn't my mother tongue, so if you see any code or grammar horror, please do not hesitate to leave feedback.

Thank you and have a good Jam!

Antonio