This wiki provides documentation for the latest, in-development version of Frogatto. (There isn't any available for the stable 1.3 version which is currently floating around the net.) If you are looking for the latest stable release, forums, and news, please visit http://www.frogatto.com/. Enjoy the game!
- Game Controls — You can access the in-game editor at any time by pressing ctrl-e. See more controls in the page.
- General FAQ — General questions and known issues of interest to players.
Frogatto is built on an engine called Anura, which provides its own markup language, FSON, its own logic language, FFL, and comes with its own graphical level-editor. It even comes with a lightweight, built-in code editor (accessible from inside the level editor).
Getting a Dev Build
The easiest way to get a dev build is to follow this tutorial; you'll get a copy of the engine which auto-updates itself.
If you're actually interested in modifying the engine, or know your way around the commandline, you might care to try compiling, yourself. We have compilation tutorials for Windows, Mac, iOS, and Android. We also have pre-built binaries for most platforms.
- General Game Making Intro — So, you want to work in the Frogatto engine? Read this first.
- General Game Making FAQ — How to approach general things like scripting and blitting in frogatto's engine.
- Developer Utilities — Utilities that come with the game and are useful for a variety of purposes.
The FFL Programming Language
Anura has its own pure-functional programming language called the Frogatto Formula Language, or simply, FFL. This is a list of the core engine concepts/features.
- A Gentle Introduction to FFL — a straightforward overview of both FFL, and how to wire together a simple test game in Anura
- FFL-FAQ — Frequently Asked Questions
- Operators — Addition, Subtraction, boolean logic, etc
- Conditionals — if/else, switch, and other control-flow statements
- Variables — a quick writeup on how to store data
- Data Types — how variables, containers, and functions are expressed
- FFL Type System — How variable types work in FFL
Advanced FFL Topics
- FFL Classes — Lightweight data structures which combine data and related functions
- List Comprehensions — A shortcut for taking a list of items, filtering it down to a subset of them, and running some code on each item.
- Caching Expressions — How to optimize repeated, expensive evaluations of the same expressions.
FFL API Reference
FFL provides a number of built-in variables and properties you can read and modify to alter the game state; it also provides 'events' which are triggers you can use to run your game code in response to things happening in the game's physics/etc engine, whether it's merely running code every frame, triggering something when an object is first added, etc.
- Object Events — An object's engine-fired events.
- Object Properties The many values an object has.
- Level Variables — Values in the level variable.
When writing code in FFL, you have access to a wide library of engine-supplied functions. This lists what's available, and in what contexts:
Object Functions: Object Manipulation and Generic FFL Tools — A large collection of general functions for modifying objects or evaluating chunks of code in various contexts
Object Functions: Level and Object Manipulation — A large collection of varied functions for manipulating levels and objects on them
Object Functions: Sound — tools for controlling the playback of sound or music.
Object Functions: Cutscenes and Level Loading — tools for dialogue, and loading/saving/pausing levels.
Object Functions: Math, Trigonometry, and Geometry — basic math functions, as well as some unusual convenience functions we've written
Object Functions: Module Management — our package-management system for self-contained games (or asset/code libraries) written for Anura
Object Functions: List Manipulation and Control Flow — a large collection of tools to edit/combine/alter lists
Object Functions: Debugging Tools — tools for introspection on game state
Object Functions: Typecasting and Type Introspection — tools for casting between types, and querying what kind of data a property/variable is.
Object Functions: A–Star Pathfinding — Tools for finding the shortest path along a tileset
Object Functions: String Manipulation — Tools for modifying strings and displaying text
Object Functions: File Manipulation — Tools for directly writing to files
Object Functions — A collection of uncategorized stuff, mostly user-defined libraries
Anura Data Formats
- Creating Tilesets — How to make tiles for use in the level editor.
- Using our Tileset Generation Script — a script for auto-generating the predefined single-tile-pattern combinations
- Creating Parallax Backgrounds — How to wire in scrolling, parallax backgrounds
- Palette-Shifting — Altering game-art by changing its colors programmatically
Core Engine Concepts
- Editor — how to use Anura's Level Editor
- Collision Detection and Handling — implementing behavior that triggers when objects collide with each other or terrain
Miscellaneous Engine Reference
A collection of various documents describing data formats and so on for different parts of the engine.
- Audio and Image File Formats — What formats (and special rules) our Image and Audio files must conform to.
- Hex Tile Support — support for Battle for Wesnoth-style hex tiles.
- Command Line Options — a list of what Anura responds to
- Repeating Segmented Levels — as seen in the 'arcade' segment of Frogatto.
- Custom-drawing-with-uv-mapping — How to deform sprites from their normal, rectangular shape
- Debugging Utilities — Tools to diagnose why things you're writing aren't working right.
- Profiling Utilities — Tools to diagnose why things are running slowly.
Developer Utilities — The
querytool, which allows mass-modification of level (or game) data, and a tool to export images of a level's layout for external use.
- Module-Server-FFL-API — Anura has an online package-manager for game mods; this is the FFL API for it.
- Relative-Positioning — How to attach one sprite to another, and have it follow the other sprite around automatically.
- Shaders — using advanced OpenGL features for graphical effects
- Stats-System-Developer-Info — using our online usage-statistics tracking
- Utilities — A collection of command-line utilities to aid development
A bunch of random articles about various various engine features or whatnot that need to be cleaned up and organized into readable, useful documents. Stuff that's not ready for primetime.
- Game Object Programming Guide — A handy walkthrough on making new objects.
Stuff we should probably remove - I'm collecting it here to have a once-over before we delete the pages in question. These refer to engine features which have been either heavily deprecated, or completely removed, in the latest version of Anura. Don't use any of the features referenced here, for obvious reasons.