---
title: Inkwell
url: 'https://wiki.teletypegames.org/hu/engines/inkwell'
markdown: 'https://wiki.teletypegames.org/hu/engines/inkwell.md'
lang: hu
date: '2026-06-09'
description: 'Az Inkwell point-and-click kalandjáték-keretrendszer Go-hoz, Ebitengine alapokon. Sima struct literal-okat regisztrálsz be manager-ekbe; a library kezeli az inputot, a renderelést, a dialog tree-ket, a cutscene-eket, a HUD-ot, a theme-eket és a lazy asset-betöltést. A kódod csak tartalmat deklarál…'
taxonomy:
  tag:
    - engine
    - highlighted
---

# Inkwell

> Az Inkwell point-and-click kalandjáték-keretrendszer Go-hoz, [Ebitengine](https://ebitengine.org/) alapokon. Sima struct literal-okat regisztrálsz be manager-ekbe; a library kezeli az inputot, a renderelést, a dialog tree-ket, a cutscene-eket, a HUD-ot, a theme-eket és a lazy asset-betöltést. A kódod csak tartalmat deklarál.

# Amit kapsz

- **SCUMM-korszakbeli váz** — jelenetek hotspot-okkal és walkbox-okkal, verb-alapú interakció, inventory és item-kombók, dialog tree-k, cutscene-ek.
- **Egy pattern** — minden elnevezett entitás egy struct literal, amit a `Manager.Register`-nek adsz át.
- **Komponálható action-ök** — `Seq`, `Par`, `If`, `Wait`, `Say`, `Walk`, … lazy condition-ökkel flag-ekre, változókra és az inventory-ra.
- **Widget-fa alapú HUD** — verb bar, verb coin, inventory, dialog box, speech bubble-ök, top bar, character panel-ek, chat log. Bármi, amit az Ebitengine ki tud rajzolni, érvényes widget.
- **Theme-ek és placeholder-ek** — négy színtéma és determinisztikus placeholder grafika, így a játék nulla asset mellett is elindul.
- **Save, load, validate** — JSON save slot-ok a futásidejű állapotnak, plusz induláskor validálja az összes névhivatkozást.

**Modulútvonal:** `git.teletypegames.org/engines/inkwell`

A „Morning Coffee" demójáték az [`inkwell-demo`](ssh://git@git.teletypegames.org:2222/demos/inkwell-demo) repóban él, és sima Go-modulként használja a könyvtárat.

# API-referencia

A kézikönyv és a referencia a forrásban él: a csomagkommentek írják le, hogyan illeszkednek a részek, és minden exportált típus, függvény és metódus doc-kommentet kap — ha egy hiányzik, a CI elbukik. Minden `vX.Y.Z` kiadási tag doc2go-val megépíti és ide teszi közzé: **[API-referencia (Go doc)](https://wiki.teletypegames.org/godoc/inkwell/latest/)**.

[API-referencia (Go doc): /godoc/inkwell/latest/](https://wiki.teletypegames.org/godoc/inkwell/latest/)

Hogyan kerül ide: [Go doc](https://wiki.teletypegames.org/hu/development/godoc).

'; 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: [Motorok](https://wiki.teletypegames.org/hu/engines.md)
- Next: [RuBBS](https://wiki.teletypegames.org/hu/engines/rubbs.md)
