Endel Dreyer - Colyseus Multiplayer Framework | Made With Defold Jam 2025 — Transcript
Full transcript
- 0:00Hello. At Made with Def Jam 2025, we
- 0:04hosted Enel Dreer, the creator of
- 0:07Kissios, the multiplayer framework that
- 0:10is suitable to make multiplayer games in
- 0:12default. Together with Endel, I also
- 0:15created an example of a realtime
- 0:17multiplayer game made with Default and
- 0:20Kissios. So, check it out. And
- 0:22meanwhile, I invite you to check out the
- 0:25recording of the talk by Andel.
- 0:28>> All righty. I think my presentation can
- 0:30collaborate a bit with the crazy games
- 0:32guys because as they mentioned very well
- 0:35like the multiplayer games tend to have
- 0:37a long tail and perhaps more engagement
- 0:40sometimes. So I'm going to talk about
- 0:43Kicus that is an open- source uh
- 0:46multiplayer framework. It won't be very
- 0:49technical. Uh it's mostly I'll show a
- 0:52bunch of nice games that I was uh
- 0:55gathering yesterday. Like uh I was
- 0:57really excited gathering a lot of games
- 0:59made with Cicius and perhaps my
- 1:01presentation got too big. It's uh but
- 1:03I'll try to skip some slides real quick
- 1:06cuz I got like 35 slides. Most of them
- 1:09are cool games made with Kicis. And at
- 1:12the very end there's uh some demos with
- 1:16the default engine. And one Pavl the one
- 1:20of the organizers here was very nice of
- 1:22him to make the port of that example. So
- 1:26really thanks to him. So starting well
- 1:28if you don't know the framework highly
- 1:30recommend checking out the uh website to
- 1:33learn more. It has rooms uh built in is
- 1:37really the core of the framework is
- 1:39rooms for any connection to be made from
- 1:43clients to the server is through rooms.
- 1:46Matchmaking clients into rooms very
- 1:49custom uh synchronizable data structures
- 1:52which is called uh schema. Yeah, I I
- 1:55think this past year I've been working
- 1:57on schema. Mostly all of my time was
- 2:00dedicated to the latest version of
- 2:02schema. It's really uh it's crazy stuff
- 2:05going on there and it's the majority of
- 2:08bugs also comes from schema. So, but
- 2:10yeah, we we try to keep it uh as bug
- 2:14free as possible and more recently uh
- 2:17authentication. Yeah, I won't go too
- 2:19much on on code, but basically you would
- 2:23define a room in the server and you
- 2:26expose that room for the SDK. So here
- 2:30there's uh also a filter by it means you
- 2:35could have the the client dictating
- 2:37which room he's going to be uh directed
- 2:40to. So if you the client provides the
- 2:43code a specific code then it will go to
- 2:46that specific room for the uh default
- 2:49integration this is the boiler plate for
- 2:52connecting with the room. So you provide
- 2:55that identifier that was declared in the
- 2:57server and basically you have a room
- 3:00connection and you can send data,
- 3:02receive data and listen to the state
- 3:05callbacks that the server has uh because
- 3:09yeah the basically the server mutates
- 3:12the state and then you receive the state
- 3:15on the client side and uh this is a
- 3:19diagram of a more complicated scenario.
- 3:22So basically a single process can handle
- 3:25multiple rooms and rooms are tied to a
- 3:29specific process and the clients
- 3:32necessarily connect directly to the
- 3:34process and the machine that those rooms
- 3:38live in. So generally one server can
- 3:42handle a lot of load like a single
- 3:45instance generally can handle like from
- 3:49500
- 3:50to 3,000. It depends on how uh how heavy
- 3:55your logic is and how much traffic your
- 3:59server is handling. traffic in the terms
- 4:02of messages. On this diagram, it's
- 4:04basically saying how the connection is
- 4:07established for a particular client with
- 4:11a particular server and it could be also
- 4:14a single server. So this diagram could
- 4:17be represent either a single server with
- 4:20multiple processes or multiple servers
- 4:24with also multiple processes. So
- 4:26necessarily you would have single uh
- 4:29load balancer which can be more
- 4:31instances of a load balancer and on kus
- 4:35you have two requests. So the first
- 4:37request you ask for a room you receive
- 4:40the data where the that room is and then
- 4:43you can connect directly to that room
- 4:47that you are asking for. Uh this is a
- 4:49real example of a single instance uh
- 4:52handling to 500 connections. This is the
- 4:55limit for this particular game cuz uh
- 4:58it's already uh very high in CPU. So if
- 5:01you need to scale more than this, you
- 5:03need uh you will need more machines.
- 5:06This game already is handling multiple
- 5:09rooms, then you can scale easily.
- 5:12there's a big problem that is unsolvable
- 5:14right now. That is if you have only a
- 5:17small amount of rooms or let's say one
- 5:20big room. It's really impossible to
- 5:22scale cuz you really need to be able to
- 5:24separate those clients into multiple
- 5:27rooms to be able to distribute these
- 5:30rooms across many uh machines or
- 5:32processes. This is new on the latest
- 5:36version. uh there was a big problem uh
- 5:39since the latest version that all state
- 5:43data all the schemas are uh visible uh
- 5:46globally. So you couldn't really have a
- 5:50way to uh have particular clients be
- 5:54aware of just a small amount of data
- 5:57either for security or for optimization
- 6:00as this is new also uh I've been fixing
- 6:02bugs about this until like past month
- 6:06hopefully now I mean I it's I can't say
- 6:09bug free but hopefully it works better
- 6:12than it used to but yeah I'm always
- 6:14looking out for fixing any issues that
- 6:18have with the latest versions. So yeah,
- 6:20I I'll go briefly how you can specify
- 6:24specific parts of the state to be
- 6:26visible for specific clients. The
- 6:29scenario of a card game, you usually
- 6:31only you would be able to see your own
- 6:33cards. It's fine for other players to
- 6:36know the number of cards you have. I
- 6:39mean, this example doesn't cover the
- 6:41scenario of like users not knowing the
- 6:44amount of cards. So here the view tag is
- 6:48being used on both the suit and number
- 6:51fields. All the other fields are visible
- 6:54to all players. For you to use the state
- 6:57view, you need to first assign the
- 7:00create an instance of the state view for
- 7:02a particular client. It's special
- 7:04keyword like client.view only accepts a
- 7:07state view. On this piece of code is a
- 7:09bit implicit, but this state.cards cards
- 7:14has the all the cards in the game and
- 7:18the server is expecting a discard
- 7:21message here that says that that card
- 7:24was played and then it adds that card to
- 7:27everyone else's state view. And if you
- 7:30need to remove you you need to do that
- 7:32manually as well. So you need to iterate
- 7:34over the state views and remove that
- 7:38item from the state views or you can
- 7:40remove the item completely from the
- 7:41state. So it's a new thing. It's I'm
- 7:44getting feedback and trying to improve.
- 7:47This approach is being easier to
- 7:50maintain and easier to to evolve as the
- 7:54previous approach that was with filters
- 7:56and it was crazy. I don't even want to
- 7:59remember about that. So yeah. Yeah. I'm
- 8:02going to show some cool games made with
- 8:05the very first one I I can't not say
- 8:07about this. It's a really old news, but
- 8:10the guys from uh Tiny Dobbins made this
- 8:13game. I I helped them make the server.
- 8:16It was the reason why the default SDK
- 8:20exists today. So, we made the default
- 8:23SDK back then in 2019.
- 8:27And since then, we've been me and the
- 8:30community improving the default SDK and
- 8:33keeping it up to date with the latest
- 8:35versions of the framework. It's very
- 8:37basic a physics based game etc. All
- 8:40right. Next. It's kind of platform. It's
- 8:43not only a game. They have uh multiple
- 8:48small games inside this blocks platform.
- 8:52I mean right now the those parkour games
- 8:55are really taking off. There are so many
- 8:57of them. But I think they were one of
- 8:59the first to release a parkour game on
- 9:02the web. And after the success of that
- 9:05parkour game, Arthur, the author of this
- 9:08game, decided to go next level and they
- 9:11released game after game and started
- 9:14really small as an indie and now I think
- 9:17he has a team of I don't know how many
- 9:19members, but yeah, it started as indie
- 9:22and now he is building a company on top
- 9:24of this game. Emolingo is also doing
- 9:28really well. They all their games
- 9:30currently uh use Keskis. They kind of
- 9:33build their own framework on top of it
- 9:35cuz I think they use play canvas right
- 9:37now. Yeah, they are non-stop releasing
- 9:40games game after after game for 3 years
- 9:42I think and they're performing really
- 9:45well as well. Simply up is from Elander
- 9:49Studios from Leonidas. They are also
- 9:52building a portfolio of games. They have
- 9:55been using uh Kesus for a few years and
- 9:58sometimes he offers a connected world uh
- 10:02online classes using play canvas and
- 10:04kicus. It's just uh really really cool
- 10:07to see uh make it meme also started as
- 10:11uh indie and now they are a company. I
- 10:14think they they managed to get this big
- 10:17from co times. So, everybody wanted to
- 10:20have some fun and it's basically a place
- 10:23where you gather together and make some
- 10:26memes and laugh at memes. Uh, right now
- 10:29you can also play from mobile. So, you
- 10:32in person you could like gather with a
- 10:34group of friends and start uh making
- 10:38memes and just having a good time. More
- 10:42recently, Legend Games started adopting
- 10:46as well. I think they have two games
- 10:48released right now and a really talented
- 10:51team. I mean at pulling off a I don't
- 10:54know how to pull off a FPS game. It's
- 10:56really for me it's really complicated
- 10:58and yeah this is also really cool cuz
- 11:00they managed to get on the top action
- 11:04game on Discord activities. So if you go
- 11:07to to launch a discord activity and you
- 11:10scroll to the action game section is
- 11:13there. Discord activities is kind of new
- 11:16thing and it's another platform to
- 11:19consider for web. I I really love on
- 11:22Rush Studio they their attention to
- 11:24detail is really it's really cool. They
- 11:27also recently started adopting uh Kicus
- 11:30for a few of their games not their big
- 11:32games. I think they have multiple modes
- 11:35as well inside the game itself. I wasn't
- 11:37aware of that many people joining
- 11:40together these games. So it's really
- 11:42fun. Similarly, On Rush also released a
- 11:45fishing game. And I think it also has
- 11:48some small mini games on it. And another
- 11:52thing that On Rush does really well is
- 11:54their mobile support. So, this game is
- 11:56running on mobile. This is a new one.
- 11:59It's this is an unreleased game. All the
- 12:02games that I've I've mentioned
- 12:03previously were released in production
- 12:06games. Uh this one is not in production
- 12:08yet, but I think it's going to do really
- 12:11well. They they are on wish list on
- 12:14Steam right now and they made it using
- 12:17uh construct tree if I'm correct. Uh,
- 12:19another one is from
- 12:23team flow on the audience also.
- 12:25Similarly, they uh it's not fully
- 12:27released if I'm right. I think it's uh
- 12:30on online on beta and also a small clip.
- 12:35I'll play here. They have a 25 versus 25
- 12:38mode. And I think there's some uh
- 12:41something that you do that affects other
- 12:43screen and it's a crazy mode inside. Of
- 12:47course, they have a single player mode.
- 12:49uh that you progress over like a map or
- 12:51something. Cool. So, this is their Steam
- 12:54page. Yeah. So, the next slide, big
- 12:57disclaimer. I know a lot of people don't
- 12:59like crypto or they're not big fan of
- 13:01crypto, but yeah, a lot of crypto games,
- 13:05they choose Cicius because it's it's
- 13:07free and easy to host. And it's nice
- 13:09that a lot of them uh use it and help.
- 13:12Yeah, by using and also reporting any
- 13:16issues basically grows the framework and
- 13:18most of them run on the Ronin chain. I
- 13:21don't understand much of the crypto
- 13:22world. So I'm just sharing cuz it's uh
- 13:25interesting to see perhaps there there
- 13:27is something to be explored on the
- 13:29crypto space. I personally don't don't
- 13:33know much about it and just observe and
- 13:35see. Um all righty I think that's it for
- 13:39the games. Cool. So now perhaps less
- 13:43exciting cuz the games are really cool.
- 13:45The demos one is not new as well. It's
- 13:49this small tic-tac-toe turnbased
- 13:52two-player shared experience. It was
- 13:55supported by Salem a few years ago. I
- 13:58think seven years ago, but we we still
- 14:01keep it updated. There's the source code
- 14:03available on GitHub and more recently
- 14:07this was ported by Pavl himself and
- 14:11yesterday we put it online and it only
- 14:15works on desktop. It doesn't work on
- 14:18mobile. If you can you will see a small
- 14:23arrow at the bottom that then you click
- 14:25on that arrow you click connect and then
- 14:29you click join or create. So yeah, this
- 14:32is still under development. I think uh I
- 14:34think Babel wants to do some
- 14:36improvements on this. It is made off the
- 14:39phot example made by Por. He made for
- 14:43the native phot plugin and we parted I
- 14:48mean Pavo ported to use Kicis. So it's
- 14:51really cool. I think Bejorn wants to
- 14:53make this like go-to example for any uh
- 14:57multiplayer provider for default. So,
- 15:01Kicus is all about open source.
- 15:03Everything is MIT licensed. The server,
- 15:06the SDKs, it's all open. So far, I run a
- 15:10script. Uh, and so far we had 160
- 15:14contributors of code directly across all
- 15:16repositories. Of course, there's more on
- 15:19the community like answering questions
- 15:21or interacting or reporting bugs is
- 15:23really important as well. Like to to to
- 15:26report a high quality to have a high
- 15:28quality report of a bug is really
- 15:30valuable and this is not accounted here.
- 15:32I think that's the most value of open
- 15:34source is having like this interactions
- 15:38with people and with the intent of
- 15:40growing and stabilizing things on the
- 15:43framework. It's close to an end. A
- 15:45special thanks to all the sponsors for
- 15:48Kesis that is blocks. Uh Pocky and Zerox
- 15:51N is like a consulting company for
- 15:54crypto and yeah Pocky you probably know
- 15:56and blocks I showed their game to all
- 15:59the individuals support as well. And
- 16:02that's it for the talk. I hope you
- 16:04enjoyed it. Thanks a lot for having me.
- 16:06I'm really glad to participate and yeah
- 16:09of course you can ping me send me a
- 16:11message on Discord on uh Twitter X
- 16:13whatever. Yeah, I'm happy to talk to
- 16:15you.
About this transcript
This page contains the full transcript of Endel Dreyer - Colyseus Multiplayer Framework | Made With Defold Jam 2025 by Unfolding Gamedev, generated from the public captions YouTube serves with the video. The transcript has 2,454 words across 339 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.
What you can do with it
Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to translate the transcript into 100+ languages.
Free YouTube transcript tool
YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, translation to 100+ languages, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.