Arkanoid game in Go using Ebiten game engine with ECS.

Overview

Arkanoid-go

Arkanoid game in Go using Ebiten game engine with ECS.

You must have Git LFS installed when cloning the repository to download assets.

See config/controls.toml for editing controls.

Screenshot

screenshot

Comments
  • Framerate issues

    Framerate issues

    The framerate is very, very jittery. This makes it hard to even control the panel right. One moment the ball comes flying in fast, then it stops due to a harsh drop in framerate, but I am moving my mouse along with the ball - or so I think - but it "tricks" me and I drop it.

    I am on Windows 10 and found the framerate not to be constant at all. The ball does not move smoothly.

    opened by gonutz 2
  • Hide Mouse Inside Window

    Hide Mouse Inside Window

    I find it irritating that I have the mouse cursor visible when it is inside the window. I think you want to hide it.

    One thing I want to point out which is great is that you track the mouse position outside the window. This game would not be playable otherwise, so good job!

    opened by gonutz 2
  • Crash on macOS

    Crash on macOS

    Thank you for using Ebiten! I tested this but found a crash:

    $ go run .
    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x4150f4e]
    
    goroutine 5 [running]:
    github.com/hajimehoshi/ebiten.(*Image).isDisposed(...)
            /Users/hajimehoshi/go/pkg/mod/github.com/hajimehoshi/[email protected]/image.go:57
    github.com/hajimehoshi/ebiten.(*Image).Bounds(...)
            /Users/hajimehoshi/go/pkg/mod/github.com/hajimehoshi/[email protected]/image.go:375
    github.com/hajimehoshi/ebiten.(*Image).Size(...)
            /Users/hajimehoshi/go/pkg/mod/github.com/hajimehoshi/[email protected]/image.go:52
    arkanoid/systems/sprite.drawImageWithWrap(0xc000024580, 0xc00000e3e0)
            /Users/hajimehoshi/ebiten-games/arkanoid-go/systems/sprite/render.go:51 +0x6e
    arkanoid/systems/sprite.RenderSystem(0xc00006c360, 0xc000012a50, 0xc000010088, 0xc000024580)
            /Users/hajimehoshi/ebiten-games/arkanoid-go/systems/sprite/render.go:42 +0x2a8
    main.game.Update(0xc00006c360, 0xc000012a50, 0xc000010088, 0xc000024580, 0x20, 0x30)
            /Users/hajimehoshi/ebiten-games/arkanoid-go/main.go:36 +0x95
    github.com/hajimehoshi/ebiten.(*imageDumper).update(0xc000254080, 0xc000024580, 0x0, 0x0)
            /Users/hajimehoshi/go/pkg/mod/github.com/hajimehoshi/[email protected]/imagedumper_desktop.go:106 +0x4e
    github.com/hajimehoshi/ebiten.(*imageDumperGame).Update(0xc00000e500, 0xc000024580, 0x468a960, 0x0)
            /Users/hajimehoshi/go/pkg/mod/github.com/hajimehoshi/[email protected]/run.go:180 +0x44
    github.com/hajimehoshi/ebiten.(*uiContext).update(0x466cb40, 0xc0001d6140, 0x0, 0x0)
            /Users/hajimehoshi/go/pkg/mod/github.com/hajimehoshi/[email protected]/uicontext.go:262 +0x150
    github.com/hajimehoshi/ebiten.(*uiContext).Update(0x466cb40, 0xc0001d6140, 0x0, 0x0)
            /Users/hajimehoshi/go/pkg/mod/github.com/hajimehoshi/[email protected]/uicontext.go:239 +0xb4
    github.com/hajimehoshi/ebiten/internal/uidriver/glfw.(*UserInterface).update(0x4667f20, 0x441a0a0, 0x466cb40, 0xc0001d0001, 0xc000048668)
            /Users/hajimehoshi/go/pkg/mod/github.com/hajimehoshi/[email protected]/internal/uidriver/glfw/ui.go:751 +0x1d9
    github.com/hajimehoshi/ebiten/internal/uidriver/glfw.(*UserInterface).loop(0x4667f20, 0x441a0a0, 0x466cb40, 0x0, 0x0)
            /Users/hajimehoshi/go/pkg/mod/github.com/hajimehoshi/[email protected]/internal/uidriver/glfw/ui.go:797 +0xec
    github.com/hajimehoshi/ebiten/internal/uidriver/glfw.(*UserInterface).run(0x4667f20, 0x441a0a0, 0x466cb40, 0x0, 0x0)
            /Users/hajimehoshi/go/pkg/mod/github.com/hajimehoshi/[email protected]/internal/uidriver/glfw/ui.go:669 +0x232
    github.com/hajimehoshi/ebiten/internal/uidriver/glfw.(*UserInterface).Run.func1(0xc000012ac0, 0xc00006c3c0, 0x4667f20, 0x441a0a0, 0x466cb40)
            /Users/hajimehoshi/go/pkg/mod/github.com/hajimehoshi/[email protected]/internal/uidriver/glfw/ui.go:535 +0xbc
    created by github.com/hajimehoshi/ebiten/internal/uidriver/glfw.(*UserInterface).Run
            /Users/hajimehoshi/go/pkg/mod/github.com/hajimehoshi/[email protected]/internal/uidriver/glfw/ui.go:532 +0x154
    exit status 2
    
    
    opened by hajimehoshi 2
  • Menu does not Always React to Keyboard

    Menu does not Always React to Keyboard

    In the main menu I can press UP/DOWN but only half of the time will this change the option. Are you not reacting to key events but instead rely on the key state during the frame?

    opened by gonutz 1
  • Horizontal Ball Movement

    Horizontal Ball Movement

    I find that depending on how the ball bounces off blocks it flies nearly horizontally sometimes. This means it takes ages to come back down to the bottom. You should probably have some margin of vertical movement always. It seems to me that it would be possible that we have a perfectly horizontal ball that never does anything anymore after deleting its line of blocks. This might lead to an infinite game.

    opened by gonutz 1
Owner
Python, C/C++, Go, Rust, Javascript, Dart
null
Simple 2D game to teach myself various things about game development and ECS, etc

2d-grass-game I really don't know what to name this game. Its a big grass field, and its in 2d so....2D Grass game This is a simple 2D game to teach m

James Wynne III 1 Jan 17, 2022
Spaceshooter - A port to go of the pygame Space Shooter game using the ebiten library

Space Shooter This is a port to go of the pygame Space Shooter (https://github.c

Jesús Espino 5 Sep 29, 2022
Minimal polymorphic solitaire engine in Go, ebiten

Gilbert Oddstream's Minimal Polymorphic Solitaire 5 There's a live WASM version here. Towards a polymorphic solitaire engine in Go+Ebiten, with help f

Oddstream 17 Dec 14, 2022
A simple breakout game made in Ebiten

Ebiten Breakout Play online on itch.io A simple breakout game made in Ebiten. This is my first game made with Ebiten - a nice simple engine which allo

Elias Daler 21 Nov 23, 2022
Simple 2D-grid game made with Ebiten

Simple 2D-grid game made with Ebiten

null 0 Mar 15, 2022
Helper library to transform TMX tile maps into a simpler format for Ebiten

Ebitmx Ebitmx is a super simple parser to help render TMX maps when using Ebiten for your games. Right now is super limited to XML and CSV data struct

Raúl 20 Nov 16, 2022
Tetra3D is a 3D software renderer written in Go and Ebiten and made for games.

Tetra3D Tetra3D Docs Support If you want to support development, feel free to check out my itch.io / Steam / Patreon. I also have a Discord server her

SolarLune 287 Dec 20, 2022
Implementation of a popular graphics benchmark written on Ebiten.

Ebiten Bunny Mark This is an implementation of the popular graphics benchmark written on Ebiten. The initial benchmark was created by Ian Lobb (code)

Artem Sedykh 17 Dec 7, 2022
Donburi is just another Entity Component System library for Ebiten inspired by legion.

Donburi Donburi is just another Entity Component System library for Ebiten inspired by legion. It aims to be a feature rich and high performance ECS L

yohamta 86 Dec 15, 2022
AircraftWar - a game powered by Go+ spx game engine

AircraftWar - a game powered by Go+ spx game engine How to run Download Go+ and build it. See https://github.com/goplus/gop#how-to-build. Download thi

GoPlus 1 Jan 5, 2022
FlappyCalf - a game powered by Go+ spx game engine

FlappyCalf - a game powered by Go+ spx game engine How to run Download Go+ and build it. See https://github.com/goplus/gop#how-to-build. Download this

GoPlus 3 Nov 6, 2022
FlappyCalf - a game powered by Go+ spx game engine

FlappyCalf - a game powered by Go+ spx game engine How to run Download Go+ and build it. See https://github.com/goplus/gop#how-to-build. Download this

GoPlus 3 Nov 6, 2022
MazePlay - a game powered by Go+ spx game engine

MazePlay - a game powered by Go+ spx game engine How to run Download Go+ and build it. See https://github.com/goplus/gop#how-to-build. Download this g

GoPlus 1 Dec 16, 2021
A small fantasy game engine in WASM using GoLang

The GoLang Fantasy Engine (GoLF Engine) is a retro game engine. It draws inspiration from fantasy console projects like pico-8, tic-80, and pyxle. Like those projects it is designed to be a retro-feeling game creation/playing tool. Unlike those projects GoLF is more minimal in scope and only provides an API and a small set of tools to help you create your games. Tools like an image editor and code editor are not built in. Despite this minimalism creating games in GoLF is still easy and should still maintain the retro game feel.

Brandon Atkinson 87 Jul 16, 2022
Go Game Engine using SDL for fun

nMage nMage is a (hopefully!) high performance 3D Game Engine written in Go being developed live, with recordings posted on YouTube. This project is b

Omar Mahdi 57 Nov 30, 2022
Engo is an open-source 2D game engine written in Go.

Engo A cross-platform game engine written in Go following an interpretation of the Entity Component System paradigm. Engo is currently compilable for

Engo 1.6k Dec 26, 2022
Go 3D Game Engine

G3N - Go 3D Game Engine G3N (pronounced "gen") is an OpenGL 3D Game Engine written in Go. It can be used to write cross-platform Go applications that

G3N - Go 3D Game Engine Repositories 2.2k Jan 9, 2023
Scalable Distributed Game Server Engine with Hot Swapping in Golang

GoWorld Scalable Distributed Game Server Engine with Hot Reload in Golang Features Architecture Introduction Get GoWorld Manage GoWorld Servers Demos

Nan Lin 2.3k Dec 25, 2022
A pure Go game engine

Oak A pure Go game engine Table of Contents Installation Motivation Features Support Quick Start Implementation and Examples Finished Games Installati

Oakmound Studio 1.3k Jan 8, 2023