An open API service indexing awesome lists of open source software.

https://github.com/plinkr/flash-blip

A fast-paced 2D game built with the LÖVE framework. Dodge obstacles, survive as long as you can, and get the highest score
https://github.com/plinkr/flash-blip

2d-game arcade game game-development gamedev indie-game love2d love2d-game lua pixel-art retro-style vertical-scroller

Last synced: 2 months ago
JSON representation

A fast-paced 2D game built with the LÖVE framework. Dodge obstacles, survive as long as you can, and get the highest score

Awesome Lists containing this project

README

          

# FLASH-BLIP

banner_flash-blip

A fast-paced 2D game built with the LOVE framework. Dodge obstacles, survive as long as you can, and get the highest score.

The game is primarily oriented toward endless mode, where players aim for the highest possible score in an infinite survival challenge.

Levels are fully procedurally generated. The game features 100 unique levels, each built using a deterministic random seed to ensure consistent layouts of points and obstacles across runs. This replaces the previous 10 fixed levels with a scalable, replayable progression system that increases in difficulty and required blips from level 1 to 100.

https://plinkr.itch.io/flash-blip

*Inspired by the work of Kenta Cho*

## Technical Details

The endless mode initializes with random obstacle generation for replayability, drawing from procedural algorithms in [`game.lua`](game/game.lua). The game uses no external assets; all visuals are rendered using simple geometric shapes (e.g., rectangles, circles) via LÖVE's drawing primitives.

Fonts are custom-drawn as pixel-based matrices in [`font.lua`](game/font.lua), allowing for lightweight, code-generated typography without bitmap files.
Reference [`text.lua`](game/text.lua) for how text is rendered and positioned in-game.

Background music is generated procedurally using pure Lua code, via LÖVE's audio APIs and algorithmic composition(reference [`music.lua`](game/music.lua)), no audio assets are required.

## How to Play

### Objective
Jump to the next point and dodge the obstacles while jumping, don't let the player's square circle reach the bottom of the screen, collect the powerups and try to achieve the highest score. In Arcade mode, you can try to beat all the levels. For detailed in-game explanations, access the HELP menu.

### Controls
- SPACE, RETURN, or left-click to blip/move to the next point.
- C or right-click to ping for powerup collection or phase shift when this powerup is active.
- ESC to pause, show the menu, or quit.
- Use the up and down arrow keys to navigate through menu options, and press Enter or Space to select one.
- R to restart.
- For Android, touch the screen to blip and hold the screen or use two simultaneous touches to ping. You can sweep with two fingers to scroll the levels or the help.

*You can also use a Game Controller.*

### Powerups
There are 6 in total: 3 active that the player activates on pickup, and 3 passive that provide ongoing benefits.

- **Active Powerups**:
- Star: Grants 10 seconds of invulnerability, allowing safe passage through obstacles.
- Hourglass: Shrinks and slows the orbiting obstacles around points, slows the player's fall scroll speed, and nearly stops the player below 80% of the screen height, lasting 10 seconds.
- Phase Shift: Enables a larger faster ping that teleports the player to the next point upon contact with a ping or the next point, ignoring obstacles, lasting 10 seconds.

- **Passive Powerups**:
- Bolt: Creates a lightning bolt around two-thirds of the way down the screen. When the player touches it, they are instantly teleported safely to the next point, preventing a fall to the bottom. The effect lasts for 30 seconds.
- Score Multiplier: Multiplies the score by 4x while active, lasting 30 seconds.
- Spawn Rate Boost: Doubles the rate of random powerup generation, lasting 30 seconds.

Powerups are collected via pinging (right-click, C key, or holding the screen in Android) or blipping over them.

### Difficulty Progression
Difficulty ramps up dynamically based on points scored, increasing obstacle rotation speed, density, and scrolling speed (reference scaling logic in [`game.lua`](game/game.lua) and [`main.lua`](game/main.lua)).

### Levels
The win condition is defined in [`level_definitions.lua`](game/level_definitions.lua) and affected by the level's difficulty, requiring a set number of blips (jumps to next points) to complete the level, endless mode has no win condition, the objective is to get high scores.

## Development Status
The game remains in active development. It now features 100 procedurally generated levels with deterministic random seeds, ensuring consistent layouts for each level across runs. An endless mode is also included, with procedurally generated circles, rotating obstacles, and powerups such as slow motion and teleportation. Scoring mechanics and intuitive menus are in place, and future updates may include an online scoreboard for tracking top scores and competitive progression.

## Installation and Running

### Prerequisites
Install [`LÖVE framework`](https://love2d.org/) (version 11.5 *Mysterious Mysteries* recommended).

### Clone the Repo
```
git clone https://github.com/plinkr/flash-blip.git
```

### Run
```
cd flash-blip/
love game/
```
from the project directory. No additional dependencies or assets needed.

### Releases
Pre-built releases for Linux, Windows, and Web are available in the [`GitHub Releases`](/../../releases) section. These are generated automatically using GitHub Actions for easy distribution without needing to install LÖVE manually.

## Contributing
Contributions are encouraged, particularly from LÖVE2D learners. Open issues for bugs or feature requests, or submit pull requests for improvements while preserving the no-external-assets approach.

## Screenshots


A few screenshots, click a thumbnail to open the full image.




screen10


screen1


screen2


screen3


screen6


screen7


screen8


screen9


screen5


screen4


## License
MIT License. See the [`LICENSE`](LICENSE) file for details.