Introduction
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 Android, iOS, Mac, HTML5, and UWP support that exists under the Lacewing Blue set only.
Quick reference
The pages are all accessible on the sidebar to the left.
You may want to start with the Concepts page, to make sure you understand the terms Lacewing uses.
You don't want to be slowing down repeatedly because you don't understand the errors or why things aren't working. The more you take in and keep questioning, the quicker you'll be coding later.
All the client examples and more are under Guides > Examples.
There are examples on connecting, loading a list of other clients on the server, loading a public channel listing, selecting the right player Active, and more!
There is a basic example of making your own server under Hosting a server, along with showing how to connect to it.
Want to be fluent in how Fusion is handling your data behind the scenes? Look into Guides > When selection is changed and Guides > How loops work.
Want to improve your app's performance or work out bugs? Make sure you read both Guides > Examples and Guides > Tips.
If you are decent at Fusion and have a working app already, but have run into strange behavior, look into Guides > How to debug your app.
Concerned about security? Read the Guides > Security on how to secure your app from malicious users.
If you are still needing support after delving through this help file, contact Phi on the Clickteam Discord. You can also ask the Discord general chat for help, there are plenty of Lacewing users!
Core Concepts
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 extensions, 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
Creators/Authors
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.