-
Notifications
You must be signed in to change notification settings - Fork 119
Home
This wiki provides documentation for the latest, in-development version of Frogatto. (For the old 1.3 release which is currently floating around the net, rewind this wiki repo to 2012 using Git.) If you are looking for the latest stable release, Discord, 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).
If you'd like to help get the game into your language, swing by the #translations channel on our Discord and get in touch! See the translating Frogatto wiki page here for the technical details of how we do it. We appreciate any help we can get! ♥
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.
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 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 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
- 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
- Editor — how to use Anura's Level Editor
- Collision Detection and Handling — implementing behavior that triggers when objects collide with each other or terrain
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
query
tool, 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.
- Adding-Engine-Function-Calls
- Attract-Mode
- Frame-Blending-Modes
- Game Object Programming Guide — A handy walkthrough on making new objects.
- Gotchas-and-Unstated-Assumptions
- Object-Hosted-Vertex-Shaders
- Properties-(Object-Variables)
- Recipes
- Strict-Mode
- Style-Guide-for-2014
- The-Animate-Function
- https://frogatto.com/2012/04/24/developing-games-using-the-frogatto-engine-part-1/
- https://frogatto.com/2012/04/28/developing-games-using-the-frogatto-engine-part-2/
- https://frogatto.com/2012/05/15/developing-games-using-the-frogatto-engine-part-3/
- https://frogatto.com/2012/05/05/how-event-handling-in-frogatto-works/
- https://frogatto.com/2012/05/25/a-gentle-introduction-to-frogatto-formula-language/
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.
More help can be found via chat in Frogatto's Discord server, or by posting on the forums. This wiki is not a complete reference. Thank you for reading! You're the best. 🙂