Lacewing is a set of networking extensions. It has its own IRC-like relay protocol, and also a webserver variant that uses the web browser protocols HTTP/HTTPS.
The Relay protocol can be used by chatrooms, multiplayer games, and any other network applications; it can be used between two apps on the same computer, over the LAN, and over the Internet, with the last needing some more setup.
There is limited mobile support that will be extended over 2021 under Lacewing Blue.
The original creator of Lacewing is ex-Clickteam member Jamie McLaughlin, with Mathias Kærlev as support mainly for the Python implementation (pylacewing). Both have since moved on to other projects.
Lacewing Blue ports were created around June 2012 by Clickteam user Phi, and his company Darkwire Software. These are still being actively maintained, the majority of the time as unpaid work, but now some kind souls are donating on the Patreon.
In the year 2020, a user named LekKit worked on his own Lacewing implementation with Phi's help; this was a rewrite not based on James' liblacewing, and only held relationship by using the Lacewing Relay message protocol. It was designed for POSIX compatibility, and so has a lot of portability, and is called RedRelay.
This documentation was originally written by LB for Lacewing build #20, and has been fully revamped and expanded by Phi, for Lacewing Blue Client build 94, and Blue Server build 97.
More details on the history and protocol can be read under Appendix.
To begin with, there are core concepts that you should understand to use Lacewing the intended way.
To this end, make sure you read thoroughly all of the Introduction and Guide topics, as they include examples, things that can easily make your program trip up, etc. Even if you're familiar with Fusion as a whole, make sure you understand Lacewing's behavior so you can be comfortable and easily debug things.
If you're coming from using MooClick, there are some key differences between MOO and Lacewing, such as when to set your name being different, and clients' IP addresses not being available to other clients.
Reading this Documentation
Hyperlinks are either internal, pointing to other topics in the help file, or external. External links are highlighted blue, and will open in a new tab.
You may notice in some places, namely conditions and expressions, that at the beginning of the first paragraph there is a letter. This letter signifies a property of that condition or expression. For conditions you may see more than one letter.
- I – Immediate Condition – ones that will not be tested constantly by Fusion runtime, but triggered by the extension.
- N – Negatable Condition – non-triggered conditions, ones you can right-click and press Negate on to check create a condition that runs when they are false
- M – Mandatory Condition – a condition that must be placed for a well-formed program. See here. If you don't have this condition, your program won't respond properly.
- S – String-Returning Expression
- N – Number-Returning Expression