Entry for 2021 Game Off

Cr1ck_t

Still very WIP! Entry for 2021 Game Off, themed "BUG". I'll add a link to the submission when it's published.

You may be interested in help for game testers, for level makers or for programmers.

Bugs in this game might be there intentionally...

Screenshot of actual gameplay

For game testers

For alpha testing use this link to download the latest Windows EXE.

For Mac & Linux it is trivial to install go with your package manager and built it yourself, see the section for programmers below.

During development there's debug info at the top showing things like player location and velocity, level number, etc. and some controls:

  • F: toggle full-screen
  • N: go to next map
  • Q: quit the game
  • Space: jump (this is a real game control, not just for testing)

If the game is crashing you can get extra information about what went wrong if you start it from the console. On Windows, that means:

  1. Open PowerShell
  2. Go to the folder where the game is, e.g. cd C:\Users\Alice\Downloads
  3. Run it like this: .\cr1ck_t.exe

For level makers

You can edit the levels using the Level Designer Toolkit (LDtk).

The latest version of levels' maps is always in assets/maps.ldtk. (Right-click link and "Save as..." or open it and save the page as a file.)

If you put a copy of that file with your changes in it in the same folder as the game binary (e.g. cr1ck_t.exe) then it will load that instead of the maps embedded in the binary, which is useful for prototyping and testing when developing a map because you don't have to compile any code.

  • Auto-tiling is done on the layer called IntGrid (tutorial on auto-tiling)
  • Entities (e.g. the player, monsters, items) are on the Entities layer

For programmers

To build the game yourself, run: go build .

I'm using Go 1.17 for this. You might have luck with an older version but the go:embed feature is only available in 1.16 so you can't go lower than that.

The Go build system will handle the rest of the dependencies for you but if you're curious, it's using:

  • ebiten simple 2D game library
  • ldtkgo to interface with LDtk
  • that's it so far

You can run the test suite with go test ./... but I haven't written any yet.

The project structure will probably stay quite simple, most logic is in the "main" file and gets extracted elsewhere as a clump of closely related code gets too big there.

Owner
Siôn le Roux
I like freedom, GNU/Linux, programming and music. I work as a software developer and I play guitar for fun when I'm not out enjoying extreme sports.
Siôn le Roux
Comments
  • Get the screen to follow the cricket

    Get the screen to follow the cricket

    So that I can try to make a big level. The visible screen can maybe be the same size as what a level is now, or a little smaller It might be cool to level that is 4 or 8 times the size

  • Jump directionally with A/D instead of flipping each jump

    Jump directionally with A/D instead of flipping each jump

    Currently the only control is space, that jumps in the direction you're facing and you switch directions when you land.

    Things to consider:

    • should space still do anything?
    • also include arrow keys as a possibliity?
    • how will touch screen input work?
    • what about mouse support, which would've so far just been a click?
  • End game conditions

    End game conditions

    Add an end game screen with credits on it. Winning screen background is the game banner with text on it.

    Conditions:

    • if the whole screen goes black you fail
    • also fail if you fall into water too many times? (i.e. lives)
    • if you reach the berry you win

    Winning screen shows:

    • how many jumps it took you
    • maybe how much time it took?
    • maybe how many times you died?

    Credits at the bottom for the game makers and also external stuff like development libraries or music.

  • Wrong starting position on level 1

    Wrong starting position on level 1

    When you reach level 1 not by pressing N on level 0, but by reaching the exit, it often starts you at the sea on the bottom (where the level 0 exit is) instead of at the top where the starting position is. Not sure why but it's not supposed to be that way.

  • Game crashes on web

    Game crashes on web

    https://github.com/scarycoffee/ebiten-camera uses ebiten.WindowSize to create the image but WindowsSize only works on desktop, so it returns nil (i.e. 0, 0), which when passed to EbitenNewImage causes a panic because it needs the image size to be greater than zero. Ebiten-camera was apparently not intended for mobile or web, I don't feel like continuing my previous camera attempt, i'll probably have to copy and adapt ebiten-camera.

  • Cricket doesn't face left when you jump left

    Cricket doesn't face left when you jump left

    Since position of the cricket is handled by the camera, the ebiten op.GeoM isn't used anymore which used to flip the Cricket left or right depending on its direction. This will need a workaround.

  • Game crashes when you land on water

    Game crashes when you land on water

    Not sure what causes it yet, probably trying to set something that doesn't exist, it's from the blackness part of the Update function: https://github.com/sinisterstuf/cr1ckt/blob/master/main.go#L224-L227

  • Show the berry tile instead of a red square for the exit

    Show the berry tile instead of a red square for the exit

    I should be able to get the tile out of the tilemap but it takes several logical steps that I haven't figured out yet, the red square is just a temporary thing.

  • Sometimes you start the level floating in the air

    Sometimes you start the level floating in the air

    This seems to be a problem with the starting state. Sometimes you'll start a level floating in the air, technically in falling state but really not falling and with idle animation. You need to jump once to get back down to the ground. I'm not sure which clever code clean-up introduced this weird issue, it'll take some spelunking.

  • Rename game from cr1ck_t to cr1ckt

    Rename game from cr1ck_t to cr1ckt

    Had some issues with some things that don't like underscores in the name, e.g. having it in the go import string complains that it doesn't like underscores and itch.io actually converts the underscore to a dash.

  • Allow jumping through plants but not earth

    Allow jumping through plants but not earth

    This is a follow-up of #6 which disabled jumping through walls. This will require distinguishing between the type of tile the cricket is colliding with and using different logic for each case.

  • Sign Android APK before uploading it to itch.io

    Sign Android APK before uploading it to itch.io

  • Optimise the collision checking not to check all the tiles

    Optimise the collision checking not to check all the tiles

    Right now the collision logic starts by looping through all 8100 tiles to check to see if the cricket is colliding with any of them. Really it should only need to check the (at most) 4 tiles it's touching at the moment. Last time I tried it with ldtk's Tile At function but then I found out that that is internally looping over all the tiles so that made it worse because we were doing that 4 times instead of one, but I think this should be possible if you use some simple maths knowing:

    • the cricket's coordinates
    • the relative coordinates of its hitbox's 4 corners
    • the size of tiles in the map and the map size

    this should let let you be able to convert a given coordinate in pixels to a row and column number for the tiles and look up only those for you're interested in from the tiles arrays without having to loop through them.

  • Add a loading/title screen

    Add a loading/title screen

    Currently when the game starts you're thrown right in. If it had a title screen you'd be able to see who made the game without having to win first (credits) and also it'd be possible to pre-load it on Web and just "press start to play" instead of clicking to load and run the game content in itch.

  • Add a shadow under the cricket

    Add a shadow under the cricket

    Really it's an excuse to to try writing a simple fragment shader but I think it'd be a cool graphical effect to have a basic darker colour (shadow) on the terrain under where the cricket is standing or maybe on caves a slightly lighter colour like a lamp. Crickets don't glow as far as I know but those caves are pretty dark and it's hard to distinguish the brown cricket on the brown background and this could help a bit.

  • Automate the Android build

    Automate the Android build

    Right now the Android version is stuck as it was on the day the Game Jam's submissions closed but if I can include it in the CI/CD process then it could receive the recent rendering optimisations to be playable too, as well as getting all updates continuously.

  • Ads a tiny tutorial level before the main one

    Ads a tiny tutorial level before the main one

    A lot of players first attempt doesn't result in much because they either tap instead of holding down to charge the jump, or immediately hit some terrain and get stuck. A tiny 640x480 map with one hill and/or one lake to jump over and a text in the sky to say "HOLD DOWN to jump far" would be enough to teach this and the rest of the game would be less frustrating.

AircraftWar - a game powered by Go+ spx game engine
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

Jan 5, 2022
FlappyCalf - a game powered by Go+ spx game engine
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

Nov 6, 2022
FlappyCalf - a game powered by Go+ spx game engine
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

Nov 6, 2022
MazePlay - a game powered by Go+ spx game engine
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

Dec 16, 2021
A simple game that I created with Ebiten game library as a way to teach myself Go. Enjoy!
A simple game that I created with Ebiten game library as a way to teach myself Go. Enjoy!

galactic-asteroid-belt Overview A simple game that I created with Ebiten game library as a way to teach myself Go. Enjoy! Run To run, you will need Go

Dec 2, 2021
RundQuiz-Game - This is a Go exercise that implements and builds a quiz game from a list of math questions in a CSV file.

Go RundQuiz Game Exercise details This exercise is broken into two parts to help simplify the process of explaining it as well as to make it easier to

Jan 5, 2022
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

Jan 17, 2022
A dead simple 2D game library for Go
A dead simple 2D game library for Go

Ebiten (v2) A dead simple 2D game library for Go Ebiten is an open source game library for the Go programming language. Ebiten's simple API allows you

Dec 28, 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

Dec 26, 2022
Go 3D Game Engine
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

Jan 9, 2023
A Game Server Skeleton in golang.
A Game Server Skeleton in golang.

A game server skeleton implemented with golang. 注意(NOTICE) 欢迎加入QQ群: 459420581 (Gopher成都,讨论一切与go有关的话题) gonet/2 gonet1已停止维护(I no longer maintain this, p

Dec 26, 2022
Scalable Distributed Game Server Engine with Hot Swapping in Golang
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

Dec 25, 2022
A game server framework in Go (golang)

Leaf A pragmatic game server framework in Go (golang). Features Extremely easy to use Reliable Multicore support Modularity Community QQ 群:376389675 D

Jan 2, 2023
Lightweight, facility, high performance golang based game server framework
Lightweight, facility, high performance golang based game server framework

Nano Nano is an easy to use, fast, lightweight game server networking library for Go. It provides a core network architecture and a series of tools an

Jan 1, 2023
A pure Go game engine
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

Jan 8, 2023
Scalable game server framework with clustering support and client libraries for iOS, Android, Unity and others through the C SDK.

pitaya Pitaya is an simple, fast and lightweight game server framework with clustering support and client libraries for iOS, Android, Unity and others

Jan 2, 2023
A hand-crafted 2D game library in Go
A hand-crafted 2D game library in Go

Pixel A hand-crafted 2D game library in Go. Take a look into the features to see what it can do. go get github.com/faiface/pixel If you are using Mod

Dec 31, 2022
Simple 2D game prototyping framework.
Simple 2D game prototyping framework.

prototype Simply prototype 2D games using an easy, minimal interface that lets you draw simple primitives and images on the screen, easily handle mous

Dec 17, 2022
Terminal-based game engine for Go, built on top of Termbox
Terminal-based game engine for Go, built on top of Termbox

Termloop Termloop is a pure Go game engine for the terminal, built on top of the excellent Termbox. It provides a simple render loop for building game

Dec 29, 2022