10 Home
dxtr edited this page 2026-10-20 00:17:58 +02:00

Pyssel

Pyssel is a game engine in the spirit of Godot, written in Common Lisp and scripted entirely in Common Lisp. Pyssel is Swedish for crafting or tinkering. A game is Lisp code and scenes of nodes, as Godot's are scripts and scenes; the engine runs in your Lisp, so the REPL stays free while a game plays, and redefining a function, a node class or a shader at the REPL changes the game at its next frame.

This wiki is Pyssel's manual. The README opens with a first program and a map of the engine's systems; Getting Started goes from there.

Pages

Getting started

  • Getting Started: what Pyssel needs, its systems, a first program, the REPL's way in, and running the tests.

The core

  • Engines: starting and stopping an engine, its options, its frames and input, drawing on demand, its threads and sync point, and the errors Pyssel signals.
  • Popups and Dialogs: windows an engine draws into beside its own.
  • Render Targets: textures an engine draws into before its window, to be sampled in the same frame.
  • Sessions: what one run of a game owns, and why a game keeps no state in global variables.
  • Live Pipelines: render pipelines that follow their shaders' redefinitions.

Drawing

  • 2D Drawing: shapes, images, transforms and text, drawn from canvases that record once.
  • Painters: what draws a canvas's instances, and painters of your own.

Scenes

  • Scene Tree: nodes, their classes and callbacks, signals, groups, changing scenes, modes and errors, and a tree's thread.
  • Signals: signals of nodes, resources and other objects, connected and emitted.
  • Tweens: values changed over time, eased, in turn or side by side.
  • Input and Actions: input events, input state, actions and shortcuts.
  • 2D Nodes: viewports, canvas items and 2D nodes, picking, zooming and panning.
  • Saving Scenes: scenes in files, packed scenes and instances.
  • Resources: data shared between scenes, value classes, copies and fonts.

User interface

  • User Interface: controls, their placement, minimum sizes, layout and drawing.
  • Containers: the controls that lay out others, and scrolling.
  • Widgets: labels, buttons, sliders, text fields, lists, trees and the rest, and a settings form.
  • Code Edits: text edits for code, with colours, gutters, folding, completion and hints, and a find and replace bar.
  • Themes: theme items, themes, icons, style boxes and the default theme.
  • Control Input: input, the keyboard focus, and drag and drop.
  • Popups, Menus and Dialogs: popups, tooltips, menus, dialogs and file dialogs.

Games and the editor

  • Playing a Game: a game played in your Lisp, as the editor plays one.
  • Projects: a project's directory and settings.
  • The Editor: the editor's window, its 2D viewport, docks, shortcuts and settings.
  • The File System Dock: the project's files, made, moved, copied and deleted as Godot's FileSystem dock does, with previews.
  • The Script Screen: the editor's code editor, where a game's Lisp is written, compiled, evaluated and searched.
  • The REPL: the editor's REPL dock, a REPL for the editor's session and one for a game's while it plays.
  • The Debugger: where a thread that met an error waits, its frames, variables and restarts, and inspecting any object.
  • Lisp Text: Lisp's text read without the reader, for colours, forms and Emacs's indentation.
  • Code Services: definitions, completions, argument hints, help, and compiling with the compiler's notes.
  • Project Manager: the list of your projects.
  • Undo and Redo: histories of the edits made to scenes.
  • Exporting: the player image exported games will start from.

The project

  • Status: what is built so far.