Тёмный
Liblast
Liblast
Liblast
Подписаться
Liblast is a free and open-source multiplayer FPS game made with Godot 4 game engine and a fully open-source toolchain.
The project is non-profit, but we do accept donations to cover server costs etc.

Website:
libla.st
Liblast Trailer 2023-03-16
2:51
Год назад
Комментарии
@purple781
@purple781 9 дней назад
> "Liblast is a non-profit project aiming to build a free and open-source game using a *fully open-source toolchain."* > Never says anywhere what tools are in the toolchain
@liblast
@liblast 8 дней назад
You're right. I should put that on the website. The exact toolchain is evolving, but the basics are not going to change much: - Godot Engine - Blender + free add-ons like DreamUV, TexTools - Material Maker + possibly custom nodes for the project - Inkscape for UI and other 2D artwork - Ardour for music and SFX + libre plug-ins like Vitalium, Surge XT, Geonkick, Airwindows, LSP etc. - unfa
@purple781
@purple781 8 дней назад
@@liblast interesting, thanks
@blendingsentinel4797
@blendingsentinel4797 10 дней назад
Movie Maker mode as in all preset or did you find out how to use the cinematic renderer for real-time gameplay? If so let me know cause I am legit trying to see if this is even possible since I heard it technically was but with some performance degradation.
@DonatemangaCom
@DonatemangaCom 15 дней назад
amazing job you're doing here!
@liblast
@liblast 14 дней назад
Thanks! - unfa
@deepelements
@deepelements 16 дней назад
I tried Godot and there is no way in hell I would give up Unreal 5 for that Engine.
@chaosmachines934
@chaosmachines934 21 день назад
lol i didn't expected this
@Even-Steven
@Even-Steven 26 дней назад
Nice effect, and nicely done :)
@liblast
@liblast 26 дней назад
Thanks!
@catto-from-heaven
@catto-from-heaven Месяц назад
Bro's like "sorry for my voice, I'm sick" I wish I had your voice
@MechazoidApocalypse
@MechazoidApocalypse 2 месяца назад
How do you group nodes together like that in a box?
@cuppajoeman8569
@cuppajoeman8569 2 месяца назад
I also got to this point with godot, once I started doing client-server reconciliation it was troublesome due to the lack of types in gdscript, direct thread support and debugging. I restarted in c++ after that using enet and spdlog for debugging and made it through, but I hope you can make it through with godot!
@Khytau
@Khytau 3 месяца назад
having the server moving each character on input sync is quite a nice progress, congrats! ofc the client should move has well for seamlessness, but shouldn't the clients sync their positions from the server (as it's the "ground truth") and interpolate or tp if difference is above some threshold ? might eventually be easier to test before having the server handling orientation from client mouse input sync-ing but again quite a nice work there! from the project files I've seen everything is well designed and compartmentalized 😁
@darknetworld
@darknetworld 3 месяца назад
I can guess few things. There are video lesson for multiplayer. If I can remember you need to change the collision 2 instead of 1. It happen to me when spawning players. As for the spawning. I think it the remote and server is mixed up. Plus you need to set up debug GUI for testing. I can guess you need to store player list. Plus you need to broadcast and check for ID for players when assign and broadcasting. Just a guess.
@davidak_de
@davidak_de 3 месяца назад
the edges look great!
@fayadkevin
@fayadkevin 3 месяца назад
So glad you guys are still putting your full effort into this rewrite! Sad that I can't in development anymore because of work. Looking forward to playing it when it's playable! ~kevs404
@liblast
@liblast 2 месяца назад
Thanks, kevs! You'll see a video when that is possible and I hope one time we'll be able to work together again, it was great working with you! - unfa
@albumin30days90
@albumin30days90 3 месяца назад
#TeamGodot
@giuseppem.34
@giuseppem.34 3 месяца назад
UNFA! I miss you on your channel. Do you still using GODOT or do you pass on a framework or something from scratch?
@DannyArchive
@DannyArchive 3 месяца назад
The page you are trying to reach either does not exist or you are not authorized to view it.
@Pincelbit
@Pincelbit 4 месяца назад
Justo lo que buscaba - te ganas mi suscripción man!
@magyararon6918
@magyararon6918 4 месяца назад
Looks very nice!
@liblast
@liblast 4 месяца назад
Thank you! :)
@charlieking7600
@charlieking7600 4 месяца назад
By the way, it would be cool to see some Xonotic maps ported to Godot. E.g. Solaruim would look great.
@liblast
@liblast 4 месяца назад
I am sure it will be possible at some point, but it'd most likely require re-building the level to work in Liblast. Also Xonotic uses the legacy shading model (Diffuse+Specular) while Godot is using PBR, so materials would need to be converted, or better - made from scratch. The game is being re- built with modding in mind, so there will be options :) - unfa
@glosmolt
@glosmolt 4 месяца назад
Hotspot ftw! Good choice and setup! Keep on rockin'!
@liblast
@liblast 4 месяца назад
Thanks! Huge props to DreamUV creator Leukbaars!
@solitary200
@solitary200 4 месяца назад
AGPL uff Should have gone with MIT
@liblast
@liblast 4 месяца назад
We re-evaluated our license choice and decided to use MIT for the rewrite. - unfa
@solitary200
@solitary200 4 месяца назад
@@liblast good call!
@DearFox
@DearFox 4 месяца назад
43:04 you transfer a hashed password from the client to the server and check it on the server without any additional calculations - theoretically this is not very secure, since if an attacker gains access to the database, you will have to force change all passwords, otherwise the hacker will be able to log in under any account simply by passing the password hash to the server. A solution to this could be additional password hashing on the server side, so that the server does not store the original data for authorization.
@liblast
@liblast 4 месяца назад
Hey, thanks for all the input on security! This implementation is long gone, and we'll be using a 4rd party FOSS solution called Nakama that will handle a lot of things for us. But of course the way we interact with it passing user credentials etc is still very important.
@DearFox
@DearFox 4 месяца назад
13:12 I think it would be easier to create not a black list of letters that are allowed, but a white list of characters. I don't think you would want to have a username with emoji or other special characters. I also think that it would be more convenient to put the list of prohibited usernames in a separate txt file or something like that, and load it once when the server starts. This way you can always expand the list of prohibited usernames, for example by adding curse words or something like that.
@DearFox
@DearFox 4 месяца назад
10:12 in fact, you are sending a response not to the person who sent the request, but to the person indicated in this request? It seems to me that this is not safe, since the client can replace this data, isn’t it?
@liblast
@liblast 4 месяца назад
That's correct. Yeah, using the `multiplayer.get_rpc_sender_id()` method to be certain about this would be better. Or even better - compare the two and note that there was a mismatch as that could indicate someone trying to mess with the system.
@radugabrielbiclineru9610
@radugabrielbiclineru9610 4 месяца назад
Funny how You called godot editor a game. It is not a game, it's the editor of the engine. But it feels good to use. For us indie developers godot simplifies some things that are really useful, and it is OPEN SOURCE
@forasago
@forasago 5 месяцев назад
Do the shell casings write to depth and motion vectors? It's particularly interesting how the ghost trails only appear in front of the noisy normal mapped parts of the wall. The flat parts render correctly.
@aatwo
@aatwo 5 месяцев назад
I love Godot, but I don't really understand why they chose to roll their own language and certainly don't see it as a pro for them. Not only do they have to waste huge resources maintaining, bug-fixing, evolving and create tooling for GD Script, but it kind of sucks for devs too because we have to learn a new language that becomes useless when we stop using Godot. Also it's indentation based 🤮
@messengercreator
@messengercreator 6 месяцев назад
me as Android experience is so easy i mean very easy learn Godot why because if u watch short u ar now pro Godot engine and others engine cry in corner
@jenovaizquierdo
@jenovaizquierdo 6 месяцев назад
Dude really awesome, how I can run Godot in iPad/ 😊
@nonetrix3066
@nonetrix3066 6 месяцев назад
Is the games bad performance the fault of Godot or the code? I am just curious the game runs quite bad on my powerful system, like 80 FPS which would be okayish but a lot of stutters. I have a RX 6800 and Ryzen 7 3700x. I am just curious because I want to make a game in Godot, but I want it to be performant at least even if I try to do a lot with it. I feel like GPU part is badly optimized in Godot or the game, have you done LODs etc.? How much thought did you put into it. I will say I am using the debug build, because for the life of me I couldn't get it to build and run for some reason on NixOS
@bonehelm
@bonehelm 6 месяцев назад
4:04 I disagree that no other languages were suited. Lua has been integrated into game engines and used to make games for decades. Maybe Godot team could have focused on delivering more valuable features instead of inventing a scripting language that no one wants to learn.
@liblast
@liblast 6 месяцев назад
Or maybe - Godot developers decided that the convenience of using an already developed language is not worth the frictions and hard edges that it will inevitably cause. It might also be that Godot is just not for you, because a lot of people don't have a problem with learning GDScript if that's what it takes to use this engine. And it's really not hard to get started. - unfa
@davidak_de
@davidak_de 6 месяцев назад
oh
@magyararon6918
@magyararon6918 6 месяцев назад
MIT license-or anything that is not copyleft- for the new code(or for some core parts of it, like for network replication)?
@liblast
@liblast 6 месяцев назад
We're thinking about it. - unfa
@Darkyahweh
@Darkyahweh 6 месяцев назад
7:20 Virtual Machines are your best friend.... and program into your code hash maps with keys and for shiggles slap in variable randomization sequences such that 3 variables = the real variable and those variables flip between each other such that it's unreadable to hex editors. Also watching for code injection in the registry for your game is pretty important. Don't host any data on the players client, all changes are made by function calls made by players client for actions, nothing more, nothing less and those functions must call on exact functions for an exact transaction that has a timer so they can't be spammed.
@eni4ever
@eni4ever 6 месяцев назад
... me and the boys ... GOLDEN! <3
@cmdrDiscoCat
@cmdrDiscoCat 6 месяцев назад
I think it's neat to have the "old" codebase visible as well as the new, cause as you'll work through this rewrite/refactor, people will be able to compare, see what you changed, how you changed it. Very important for people to learn by seeing refactoring in practice.
@cmdrDiscoCat
@cmdrDiscoCat 6 месяцев назад
@@liblastI'm not a git expert sadly :/ Leaving the old code with assets available in some form would be neat for the reasons I mentioned, but then if you have cost/storage space issues, do what you can ! As I've mentioned on Mastodon, in any case, I wish the team the best for what's next for Liblast !
@qwfp
@qwfp 6 месяцев назад
@@liblast One thing you could do is squash the history of the "legacy" branch into a single commit. This should help if there is a lot changed or removed assets/binary files in the history. So after the squashing, it would only take up as much as the current version of the project does. There are also many ways of hosting the files themselves separately from the code (but they are often a bit painful to use). If it sounds like something you want to try and you'd need some help, let me know
@liblast
@liblast 6 месяцев назад
@@qwfp Thanks!
@awyeagames
@awyeagames 6 месяцев назад
That's pretty cool
@Lukifah
@Lukifah 6 месяцев назад
ah
@jessiezerrivet9203
@jessiezerrivet9203 6 месяцев назад
The fact that your fedi instance's COC is not just a single rule (don't post anything illegal) and it has a substantial defederation list discourages me from wanting to contribute. Without a commitment to free speech, the project is at risk of being dictated by cry-bullies. Emotional manipulators are a common reason for the demise of many FOSS projects.
@smugglersstudio
@smugglersstudio 6 месяцев назад
I used dumpest way. It fits my game welll) actualy its pretty minimalistic and I like It class_name ButtonSounded func _ready(): connect("mouse_entered", mouse_enter) func mouse_enter(): core.sound().hover()
@blasterxt9
@blasterxt9 6 месяцев назад
Use defold for 2d games It's really amazing It supports Nintendo switch and consoles and PC and mac and mobiles etc .
@liblast
@liblast 6 месяцев назад
You can put games on Switch with Godot as well :)
@blasterxt9
@blasterxt9 6 месяцев назад
@@liblast really then I will use godot
@messengercreator
@messengercreator 6 месяцев назад
​@@blasterxt9so defold becoming de/fol so Godot is a sukuna ryuse senkai maveluvant shrine Godot is top 1 because very easy to use and learn
@blasterxt9
@blasterxt9 6 месяцев назад
@@messengercreator im using godot 4
@hingedevoper69
@hingedevoper69 7 месяцев назад
dawg just make an autoload smh
@dbatdev
@dbatdev 7 месяцев назад
looking good in places. a bit dark maybe, and ceiling light too intense. Nice work freeman.
@timflatus
@timflatus 7 месяцев назад
Is it something to do with when the text_changed signal is emitted? I'm also wondering if this script could be directly attached to the ui_theme? Sound should be an attribute of the button class.
@TomasAPayer
@TomasAPayer 8 месяцев назад
How did you organize your UI scene? Each of the menu faces is it's own scene?
@DARamosYT
@DARamosYT 8 месяцев назад
I zoned out after a bit. 10:08 to regain my bearings.
@felipefacundes1
@felipefacundes1 8 месяцев назад
Help me with the code please, Godot 4, MSAA simply doesn't give an error, but on the other hand it has no effect. This is a slide button: func _on_msaa_value_changed(value): match value: 0: RenderingServer.viewport_set_msaa_2d(Viewport, RenderingServer.VIEWPORT_MSAA_DISABLED) 1: RenderingServer.viewport_set_msaa_2d(Viewport, RenderingServer.VIEWPORT_MSAA_2X) 2: RenderingServer.viewport_set_msaa_2d(Viewport, RenderingServer.VIEWPORT_MSAA_4X) 3: RenderingServer.viewport_set_msaa_2d(Viewport, RenderingServer.VIEWPORT_MSAA_8X) 4: RenderingServer.viewport_set_msaa_2d(Viewport, RenderingServer.VIEWPORT_MSAA_MAX) Checkbox for FXAA: func _on_fxaa_toggled(toggled_on): if toggled_on: get_viewport().SCREEN_SPACE_AA_FXAA else: RenderingServer.VIEWPORT_SCREEN_SPACE_AA_FXAA