enet
EditENet is a UDP networking plugin bundled with LÖVR that can be used for networking and multiplayer experiences. ENet allows messages to be marked for reliable and in-order delivery, allowing the speed of UDP to be used without sacrificing reliability.
The full documentation and examples can be found on the lua-enet page. LÖVE also has lua-enet documentation here.
Example
Here's a simple echo server example. The client sends a message to the server and waits for a response. The server waits for a message and sends it back to the client.
-- client/main.lua
local enet = require 'enet'
function lovr.load()
local host = enet.host_create()
local server = host:connect('localhost:6789')
local done = false
while not done do
local event = host:service(100)
if event then
if event.type == 'connect' then
print('Connected to', event.peer)
event.peer:send('hello world')
elseif event.type == 'receive' then
print('Got message: ', event.data, event.peer)
done = true
end
end
end
server:disconnect()
host:flush()
end
-- server/main.lua
local enet = require 'enet'
function lovr.load()
local host = enet.host_create('localhost:6789')
while true do
local event = host:service(100)
if event and event.type == 'receive' then
print('Got message: ', event.data, event.peer)
event.peer:send(event.data)
end
end
end