Repository navigation
Releases
Releases · joeyrobert/eagle.cr
Eagle v0.2.0
The first packaged release of Eagle, a Crystal-native 2D/3D game engine. It includes prebuilt CLI binaries for macOS (arm64), Linux (x86_64) and Windows (x86_64), plus a Windows installer.
Install
# macOS and Linux
curl -fsSL https://raw.githubusercontent.com/joeyrobert/eagle.cr/main/install.sh | sh
eagle init mygame --yes && cd mygame && eagle run# Windows (PowerShell), or run eagle-setup.exe below
irm https://raw.githubusercontent.com/joeyrobert/eagle.cr/main/install.ps1 | iexOr add it as a shard:
dependencies:
eagle:
github: joeyrobert/eagle.cr
version: ~> 0.2.0Highlights
- Getting started:
- One-line installers for macOS, Linux and Windows, plus a Windows setup program.
eagle initproject wizard.eagle export exe|web|app.
- Physics3D: capsules, static triangle-mesh colliders, distance, ball, hinge and fixed joints, and body sleeping.
- UI: scroll containers, drop-downs (
OptionButton), and rich text with colours, bold and links. - Touch:
- Multi-touch events, drag and gesture recognizers (tap, double tap, long press, swipe, pinch, rotate).
- An on-screen virtual joystick and buttons.
- Mouse emulation, so existing games work on phones.
- Text input: IME composition and a cross-platform
Clipboard, including on the web. - 3D audio: spatial sources with panning, distance models, interaural delay, head shadow and doppler.
- Rendering: shapes and text share draw calls. A text-heavy scene went from 9 draw calls to 2.
- Algorithms library: A* and flow fields, noise, Poisson disk sampling, flocking, shadowcasting FOV, minimax and more.
- New examples:
- Joyride: an infinite streamed city driving game.
- Neon Bastion: a first-person shooter.
- Voxel Island.
- Tilt Maze.
- A touch demo and an algorithms demo.
- Checkers now has AI levels and forced-capture options.
Fixes
A bug sweep across the engine and every example before this release:
- Engine: config flags like
vsync: falsewere ignored; nodes freeing themselves mid-frame skipped siblings;look_atfailed straight up or down; shadows broke when the shadow light wasn't first; OBJ relative indices loaded wrong;Image.loadignoredres://paths. - Physics and audio: hinge and fixed joints now converge; stacks fall asleep;
AudioStream#volumeis applied; chained Ogg files decode. - UI: TextInput mishandled multibyte text on Backspace, and drop-downs could open off-screen.
- Examples: game-over, restart and undo states, and mouse and gamepad look direction.
- Crash: an intermittent GL crash, caused by Crystal's scheduler moving the main fiber to another thread, is fixed without patching Crystal: games build with Crystal's single-threaded runtime. The
eagleCLI passes-Dwithout_mtfor you, and builds without it get a clear error instead of a crash.
CI now runs the spec suite (over 450 specs) and smoke-runs every example headless on Linux.
Known limitations
- Windows: best effort. The release build is compiled and smoke-tested (
eagle version) on Windows CI, but games have not been run on a real Windows machine yet. - Touch: tested with synthetic events and Chrome device emulation, not yet on real phones. Button hover highlights can stick after a tap.
- Web IME and clipboard: tested with synthetic events only. iOS Safari may not raise the keyboard on the first tap.
Clipboard.texton the web only sees text copied or pasted inside the page. - Web platform: no file system or threads, pointer lock needs a click, and audio starts after the first user gesture.
- Physics3D:
- Mesh colliders are static only.
- Joints have no limits, motors or springs.
- Sleeping is off by default.
- There is no continuous collision detection, so very fast small bodies can tunnel through thin geometry.
- UI: scroll containers have no kinetic scrolling, and drop-downs have no type-to-search.
- Crystal: requires 1.21. Plain
crystal/shardsbuilds should pass-Dwithout_mt(theeagleCLI adds it), so the game stays on the thread that owns the window. That meansFiber::ExecutionContextisn't available in games.