---
title: Ebitengine
url: 'https://wiki.teletypegames.org/hu/platforms/ebitengine'
markdown: 'https://wiki.teletypegames.org/hu/platforms/ebitengine.md'
lang: hu
date: '2026-03-03'
description: 'Az Ebitengine (korábban Ebiten) gyors és hordozható 2D játékmotor Góhoz. Weboldal: https://ebitengine.org Ezzel a motorral készült projektek: Rabbit Roller Makefile A Go natív binárisra vagy WebAssemblyre fordít. A webes buildhez három fájl kell: game.wasm, wasm_exec.js és index.html. Változók …'
taxonomy:
  tag:
    - howto
---

# Ebitengine

Az Ebitengine (korábban Ebiten) gyors és hordozható 2D játékmotor Góhoz.

**Weboldal:** https://ebitengine.org **Ezzel a motorral készült projektek:** [Rabbit Roller](https://wiki.teletypegames.org/hu/projects/rabbitroller)

---

# Makefile

A Go natív binárisra vagy WebAssemblyre fordít. A webes buildhez három fájl kell: `game.wasm`, `wasm_exec.js` és `index.html`.

## Változók

| Változó | Leírás | Alapérték |
|---|---|---|
| `PROJECT` | A kimeneti fájlnevekben használt név | `ebitenginedemo` |
| `BIN_DIR` | Natív futtatható állomány | `bin` |
| `DIST_DIR` | WASM és csomagolt artifactok | `dist` |
| `WASM_NAME` | A WebAssembly fájl neve | `game.wasm` |
| `VERSION_FILE` | Verziófájl a CI-hez | `.version` |
| `INDEX_HTML_URL` | index.html sablon | ebitengine-tools repó |

## Célok

```sh
make build                   # go build -> bin/<PROJECT> az aktuális OS-re
make wasm                    # dist/game.wasm + wasm_exec.js
make export VERSION=1.0.0     # wasm + index.html ebitenginedemo-1.0.0.html.zip néven becsomagolva
make watch                   # a natív bináris újraépítése a . alatti változásra (fswatch kell hozzá)
make clean                   # a bin/ és a dist/ törlése
```

## VS Code

Másold az `example-tasks.json` fájlt `.vscode/tasks.json` néven, és cseréld az `ebitenginedemo` nevet a saját `PROJECT` értékedre. Feladatok: **Run** (alapértelmezett, `Cmd+Shift+B`), **Build & Run**, **Build WASM**, **Make build**.

## Előálló artifactok

| Fájl | Leírás |
|---|---|
| `bin/ebitenginedemo` | Natív futtatható állomány az aktuális OS-re |
| `dist/game.wasm` | WebAssembly bináris |
| `dist/wasm_exec.js` | A Go WASM-futtatókörnyezetének segédfájlja |
| `ebitenginedemo-<verzió>.html.zip` | Webes build (index.html + WASM + runtime) |

## Követelmények

Csak helyben: `make`, `go` 1.11+, `curl`, `zip`, watch módhoz pedig `fswatch`. A CI-image-ek hozzák a saját eszközeiket.

---

# Pipeline

A pipeline nincs benne a játékrepóban. A Woodpecker az update szervertől kéri el, a WarpEngine pedig a teljes konfigurációt a `/build/config` végponton szolgálja ki (sablon: `lib/warp_engine/ci/woodpecker/platforms/ebitengine/pipeline.yaml.erb`).

A repóhoz három dolog kell:

```yaml
# .woodpecker.yaml
platform: ebitengine
```

- `metadata.json`
- az `application_token` Woodpecker-secret: egy WarpEngine ApplicationToken az `update` + `upload` jogosultságokkal
- `name: <szoftver>` a jelölőben, de csak akkor, ha a szoftvernév eltér a repó nevétől

A builder image-ek az update szerver `ci_platforms` konfigurációjából jönnek. A teletypegames.org-on a builder az `ebitengine-ttg`: az `ebitengine-builder` image, előtöltve az összes TTG-s Go-projekt moduljaival, így a build, a binaries és a test lépés nem tölti le őket újra (egy új függőséget a build ugyanúgy letölt). A segédlépések (version, upload, publish) a `ci-tools` image-ben futnak, amelyben a git, a jq, a curl és a zip előre telepítve van, így semmit nem telepítenek. A kiszolgált pipeline megtekintése:

```sh
curl "https://teletypegames.org/build/config?platform=ebitengine"
```

## Lépések

| Lépés | Mit csinál |
|---|---|
| 1. version | az engine közös lépése (a WarpEngine 1.7 óta): a verzió a `metadata.json`-ból; tagnél a verziótagnek egyeznie kell vele; a repó alapágán kívül és egy `dev-<ág>` tagen `dev-<verzió>-<ág>`, verzió nélkül `dev-<commit>`; megírja a `.version` fájlt |
| 2. build | `GOOS=js GOARCH=wasm`, hozzáadja a `wasm_exec.js` és `index.html` fájlokat, majd becsomagolja |
| 3. binaries | keresztfordítás `win-x86`, `win-x64`, `linux-x64` célokra, mindegyikhez egy verziózott zip |
| 4. upload | **csak tagre:** átmásolja a `metadata.json` fájlt a verziózott nevére, majd `POST /build/upload` az `X-Update-Secret` fejléccel |
| 5. publish | **csak tagre:** `POST /build/publish?platform=ebitengine` |
| 6. tag | az engine közös lépése (a WarpEngine 1.9 óta), **csak push után**: a forrás új verziója megkapja a `v<verzió>` tagjét, és annak pipeline-ja futtatja a *csak tagre* jelölt lépéseket; egy már tagelt verzió nem ad ki semmit; egy dev build az ág `dev-<ág>` tagjét a commitra helyezi, így mindig a legfrissebb dev build van kiadva. Lásd: *Verziók és kiadások* a [WarpEngine](https://wiki.teletypegames.org/hu/engines/warp-engine) oldalon |

A verzió emelése maga a kiadás: a push buildel és tagel, a tag pipeline-ja tölt fel és publikál (WarpEngine 1.9). Egy push, amely nem emeli a verziót, csak buildel.

## Eredmény

Egy verziózott webes build, valamint Windows- és Linux-binárisok, feltöltve és publikálva. A nyilvános játékindex magától frissül.

'; var prevLevel = 2; for (var i = 0; i < headings.length; i++) { var h = headings\[i\]; var text = h.textContent.trim(); var slug = text.toLowerCase() .replace(/\[áàâä\]/g,'a').replace(/\[éèêë\]/g,'e').replace(/\[íìîï\]/g,'i') .replace(/\[óòôöő\]/g,'o').replace(/\[úùûüű\]/g,'u') .replace(/\[^a-z0-9\]+/g, '-').replace(/^-|-$/g, ''); if (!slug) slug = 'heading-' + i; if (used\[slug\]) { slug += '-' + i; } used\[slug\] = true; h.id = slug; var level = parseInt(h.tagName.charAt(1)); var cls = level > 2 ? ' class="toc-child"' : ''; html += '- [' + text + '](#'%20+%20slug%20+%20')
'; } html += '
'; toc.innerHTML = html; // Scroll-spy: highlight current heading var links = toc.querySelectorAll('a'); var ids = \[\]; for (var j = 0; j < links.length; j++) ids.push(links\[j\].getAttribute('href').slice(1)); function updateActive() { var current = ''; for (var k = 0; k < ids.length; k++) { var el = document.getElementById(ids\[k\]); if (el && el.getBoundingClientRect().top <= 80) current = ids\[k\]; } for (var m = 0; m < links.length; m++) { links\[m\].parentNode.classList.toggle('active', links\[m\].getAttribute('href') === '#' + current); } } window.addEventListener('scroll', updateActive, { passive: true }); updateActive(); })();

---

## Navigation

- Parent: [Platformok](https://wiki.teletypegames.org/hu/platforms.md)
- Previous: [DOS](https://wiki.teletypegames.org/hu/platforms/dos.md)
- Next: [Godot](https://wiki.teletypegames.org/hu/platforms/godot.md)
- Children:
  - [Steam-megjelenési terv](https://wiki.teletypegames.org/hu/platforms/ebitengine/steam-publication-plan.md)
