Tutemic
Tutemic
  • Видео 23
  • Просмотров 378 763
Godot 4 - 3D: Code architecture course in a single video (FULLY EXPLAINED)
Assets -------
3D pool graphics (to follow the tutorial directly), royalty free license on CGTrader:
(author h4nv)
www.cgtrader.com/free-3d-models/interior/other/billiard-table-60724c54-2e03-49e6-9ba3-81f9a264a879
Must download Blender to import the 3D assets (no need to open Blender though!)
www.blender.org/download/
2D pool graphics (if you would rather do a 2D version of the game) public domain (CC0) license
(author game_assets_66)
opengameart.org/content/8-ball-pool-assets
Timestamps -------
Intro: 0:00
Importing assets and why pool?: 1:02
Setting up Billiard Table and import settings: 3:00
Reorganizing FileSystem structure: 15:08
Basic lighting and explaining 3D axes: 18:04
Setting up the Ball scen...
Просмотров: 32 358

Видео

Attention Unity game devs: Do not compromise.
Просмотров 14 тыс.11 месяцев назад
Context: blog.unity.com/news/plan-pricing-and-packaging-updates
Godot 4: how to implement interfaces in GDScript!
Просмотров 27 тыс.Год назад
Want to up your coding game in Godot? Try implementing interfaces in GDScript. I went ahead and cleaned it up and posted an initial ready-to-use version of the interfaces.gd file on GitHub for you to use in your own project! github.com/tutemic/gdscript-interfaces/ The version in the GitHub link solves the undesirable string reference in checking if a node implements an interface (shown in the v...
Godot for absolute beginners - start the right way
Просмотров 28 тыс.Год назад
Whether or not you have written any code, this is the starting point for getting into game programming with Godot! Assets for the tutorial: Kenney space shooter redux pack: kenney.nl/assets/space-shooter-redux Space background: opengameart.org/content/space-background-1 Get the Godot Engine here: godotengine.org/download/ Godot version in tutorial is 4.1.1, but should work almost entirely the s...
What netcode do you actually need?
Просмотров 10 тыс.3 года назад
Sometimes it's useful to know why you're writing that network programming for games (e.g. Unity Mirror, SpatialOS, MLAPI, Photon, and Unreal replication), rather than just explaining how to do it. Timestamps Setting the stage about game elements associated with networking: (0:00) Single-player with leaderboards or achievements: (4:11) How a basic client server relationship works: (6:21) Underst...
AI in games is not that scary
Просмотров 7 тыс.3 года назад
Learn how artificial intelligence is and "enemy AI" is usually implemented in game development. Timestamps Intro: (0:00) Establishing what is meant by "AI" and who is responsible for its design: (0:36) Patterns and conditions through finite state machines: (4:55) Pathfinding with various graph search algorithms: (13:07) Adding complexity, accuracy, and speed with Dijkstra's algorithm and A*: (2...
Let's talk about physics engines in games
Просмотров 11 тыс.3 года назад
Learn about how physics engines work and why we use them in game development. Timestamps Intro: (0:00) Example of physics engines, Havok, Box2D, and more: (0:46) Introducing physics engines with an example: (3:44) Elements within the physics simulation: (6:08) Breaking down each phase of a physics step: (12:54) Optimization procedures in physics engines: (21:08) Execution flow of physics steps ...
What is the best game programming language? * Why they choose the ones they do.
Просмотров 6 тыс.3 года назад
Today we find out the reasons game programming languages are chosen for game engines. We look at your favorites, including C#, C , GDScript, JavaScript, Blueprint, and others. Chapters: Intro: (0:00) Programming languages versus scripting languages: (0:17) Layer between engine language and scripting language: (1:59) Embedded scripting languages versus non-proprietary languages: (8:16) Why GDScr...
Serialization in simple terms - game programming
Просмотров 2,8 тыс.3 года назад
Let's unconfuse the concept of serialization in game development, applying to any game engine - Unity, Godot, Unreal, etc. Timestamps Intro: (0:00) What serialization is NOT: (0:40) Understanding serialization through an example: (2:09) Deserialization and serialization in computing: (4:42) Different serialization formats: (7:51) When serialization is used, starting with saving and loading: (9:...
When and why raycasting is used in games
Просмотров 6 тыс.3 года назад
This is an introduction to what raycasting is for games, and when we use it. Timestamps: Intro: (0:00) Similar terms, such as raytracing, line tracing, etc.: (0:18) Explain like I'm 5 eli5 what is raycasting?: (1:12) Object selection and identification: (3:55) Placing objects on uneven geometry: (5:49) Shooting weapons in first-person shooters: (7:35) Choosing raycasting over projectiles: (10:2...
Component pattern - game programming series
Просмотров 6 тыс.3 года назад
Whether you use Unity, Unreal, Godot, or other game engine, it is important to know the common patterns in game programming.
5 ways game programming is different than other programming
Просмотров 4,7 тыс.3 года назад
5 ways game programming is different than other programming
Rewind and replay systems in games ** command pattern, deterministic gameplay and more
Просмотров 3,4 тыс.3 года назад
Rewind and replay systems in games command pattern, deterministic gameplay and more
Top 5 RED FLAGS 🚩 in job interviews
Просмотров 1,6 тыс.3 года назад
Top 5 RED FLAGS 🚩 in job interviews
Are singletons really that bad? Learn the singleton game programming pattern
Просмотров 9 тыс.3 года назад
Are singletons really that bad? Learn the singleton game programming pattern
The good and bad way to use events and signals in games (observer pattern)
Просмотров 9 тыс.3 года назад
The good and bad way to use events and signals in games (observer pattern)
Vectors in games - how and when you use them
Просмотров 3,4 тыс.3 года назад
Vectors in games - how and when you use them
Godot 3D: Code architecture course in a single video * custom signals * dynamic resources * more!
Просмотров 147 тыс.3 года назад
Godot 3D: Code architecture course in a single video * custom signals * dynamic resources * more!
Unity video course - write better code! * Scriptable objects * Custom events * Coroutines * and more
Просмотров 4,3 тыс.3 года назад
Unity video course - write better code! * Scriptable objects * Custom events * Coroutines * and more

Комментарии

  • @heyblindmouse
    @heyblindmouse День назад

    Saw that you haven't uploaded a video in some time. Hope you're doing well.

  • @heyblindmouse
    @heyblindmouse День назад

    Amazing. Really approachable and knowledgeable. You have a gift for teaching (and programming, too)!

  • @dakotah4866
    @dakotah4866 4 дня назад

    Hey I just found your channel just starting to get in the Godot myself. Still getting used to the scripting a bit and you're going more of the visual scripting. I was wondering if you ever plan on doing the add-on for godot's visual scripting?

  • @jaxontetley
    @jaxontetley 6 дней назад

    thanks this was very helpful dude

  • @muktuk4866
    @muktuk4866 6 дней назад

    Excellent tutorial, thank you so much mate!

  • @NorthStateGames
    @NorthStateGames 7 дней назад

    Best Godot tutorial to get people up to speed that exists.

  • @wildhynagames7911
    @wildhynagames7911 9 дней назад

    This is so informative while being so funny 😂

  • @kamex3102
    @kamex3102 12 дней назад

    Hey! Strongly believe you are overcomplecating the problem. You are puting too many responsibilities into each class while also having string referencies. Also puting lots of code into single file. Kinda opposite of Engine ideology i believe. Why not use composition instead? Put code that you like into separate child node of object. Heres simple example of how to get child component of given class: static func get_component(owner:Node,class_type:Object)->Node: var comps:Array[Node] = owner.get_children() for comp in comps: if is_instance_of(comp,class_type): return comp return Scene composition: Target | -HP (class_name Health) -Other nodes..... For example we have class with name Health extending Node. Than we can just try: var health = get_component(target,Health)

  • @villelundin2915
    @villelundin2915 15 дней назад

    Came from your Godot for absolute beginners video. And this more advance video were still fun for me to dip my toes in more advanced concepts. And you explained it well.

  • @johnmerriam7844
    @johnmerriam7844 17 дней назад

    When you are using the if "implements" in other_area does the area in question need to be an Area2d node ? In my setup, the script for the enemy is attached to a characterbody2d with an area2d node child, and this if "implements" code isn't working.

    • @johnmerriam7844
      @johnmerriam7844 17 дней назад

      I checked this by creating a script for the Area2D node specifically, and using var implements there, and it now works. Can anyone explain about this?

  • @johnmerriam7844
    @johnmerriam7844 17 дней назад

    bro I watched this like 3-4 times and I always die laughing at 1:08

  • @JericoCantoria-e1j
    @JericoCantoria-e1j 26 дней назад

    Am i gonna be able to do that same game in my mobile phone using godot 4?

  • @joshkgw9504
    @joshkgw9504 27 дней назад

    For personal future reference: 4:18:25

  • @hiiambarney4489
    @hiiambarney4489 Месяц назад

    I am fairly inexperienced in programming and so on, let this be prefaced. I was searching for "interfaces" in regards to separating input checking from a player script and came across this video. Isn't the entire setup fighting the entire design "philosophy" of Godot's Node system? And please correct me if I'm wrong, so I may learn, but: Wouldn't it be easier, quicker, and more modular to just create separate nodes for expected behavior from entities? Instead of creating this autoload interface, we create a node with a script, giving it the class name "Damageable" and specifically handle how damage is processed in there. For Example: It would probably be beneficial to handle the entire health system of an entity inside one of these components, offloading the responsibility from calculating damage, when to queue_free() itself and so on, from each enemy type, player, or whatever can take damage in your game, be it an asteroid or other obstacle that isn't a player nor enemy, onto it's own component. Have an indestructible obstacle? Don't attach the health component, simple. This, at least it seems to me, is, on a fundamental level, how Godot seems to want to handle it's relations. A Player doesn't need to have a sprite, it could instead have a 3d Model as a child, representing it's visual component. You define little amalgamations of complex objects by adding functionality through attaching more nodes. An Area2D could therefore just be defined as a "Hitbox Component" and can have a Class attached to it like that. With this setup, you don't even need to check if something "has_method", if the area you are checking (using the built in keyword "is") IS (of the class) HitboxComponent, you can directly call the function from there, giving you intellisense and even let you control + click it and see the functions declaration. All in all this system requires at most as much setup as this interface has but has a range of benefits for structuring and visually adding functionality to any given entity on the fly, right? Sort of like using little "mini interfaces" in the form of nodes instead of an autoload and essentially having to rewrite behavior for entities that cannot inherit every behavior, such as an obstacle.

  • @chasefletcher2010
    @chasefletcher2010 Месяц назад

    This dude's ability to use verbal and visual aids to convey his point so effectively is super impressive.

  • @CptSamel
    @CptSamel Месяц назад

    At 3:19:50, he creates a signal "on area entered 2D". I'm following along and doing the project with the tutorial but I don't see that signal anywhere. I've made sure I'm selected on everything he has selected, poked around but my list of signals to choose from is much shorter than his. Any thoughts on why I can't find and add this elusive signal?

  • @tranquy2205
    @tranquy2205 Месяц назад

    I just wanted to say that your tutorial is amazing

  • @taftafcool
    @taftafcool Месяц назад

    Thank you so so so so much shaban

  • @thomsencummings8471
    @thomsencummings8471 Месяц назад

    couldnt you defined Implements as a const in Interface autoload, so you dont have to do the string compare?

  • @SuomiGameHUB
    @SuomiGameHUB Месяц назад

    Can someone point me to the hardest Godot tutorial, please?

  • @marketwoodfarm
    @marketwoodfarm Месяц назад

    43:46 I've made something move!! I'm going to make the next Finial Fantasy game :)

  • @marketwoodfarm
    @marketwoodfarm Месяц назад

    Who else pressed F5 at 08:35 to be fast forwarded in the video to 22 minute :)🤣🤣

  • @stevegarden1
    @stevegarden1 Месяц назад

    Your way of teaching is wonderful!! I overtake a lot of block by following your tutorial. Thanks a lot Stefano

  • @ameerkhilji9946
    @ameerkhilji9946 Месяц назад

    Will you make more godot content? Your videos are very helpful

  • @mrcleglaw256
    @mrcleglaw256 Месяц назад

    this is great im loving it. im an absolute beginner and i just decided to give a shot at godot since i was also learning python. the first ever tutorial started is this tutorial and im glad i did. i have to say tho, its not a breeze, theres still a lot to understand. i am 3 hours in as of now, on my day 3. anyway what was i saying, silly me. sir, you should be more visible. where are you teaching, is there any more lessons? or do you have any game projects? you need to provide us some info cause you got some serious teaching skills and your sense of humor cracks me up.

    • @mrcleglaw256
      @mrcleglaw256 Месяц назад

      finished it! it was very insightful i guess ii have a good minset to learn further now. thanks man, hope you do more videos soon.

  • @MoogieSRO
    @MoogieSRO Месяц назад

    44:20 - Small tip for anyone whose player object seems to 'lag behind' the mouse cursor, instead of being instantly positioned like in the video: it's because you have vsync turned on in the project settings. Turn it off and the position will update instantly instead of trailing behind.

  • @charwie4849
    @charwie4849 2 месяца назад

    Thanks a lot for making this tutorial. Really has helped me understand 3d concepts more. You're a great teacher! 👍

  • @abdennacer6329
    @abdennacer6329 2 месяца назад

    Thanku so much pls make tuturial on 3d physics how can i make anything move as i want ,im talking about vegicle controller and more , how make complex physics in 3d world and mechanics

  • @Whatisthishuhhmm
    @Whatisthishuhhmm 2 месяца назад

    Guys, is there a guide that would fill the gap between the "absolute beginners" video and this one? I already feel lost on the model reimporting stage.

  • @plantbasedavid
    @plantbasedavid 2 месяца назад

    "In a single video" The video: 10 hours

  • @Dreamskiy
    @Dreamskiy 2 месяца назад

    Thanks!

  • @JoinGaming-ze4vm
    @JoinGaming-ze4vm 2 месяца назад

    Do you have a video somewhere where you show, not only how to put a score-system into the game, but a high-score as well? So far I have only had time to watch the 4 hour long tutorial and it was superb!!

  • @Zewofficial
    @Zewofficial 2 месяца назад

    Great vid!! Hoping for more!!! 🎉

  • @Weeb1367
    @Weeb1367 2 месяца назад

    OH MY GOD

  • @pedront
    @pedront 2 месяца назад

    Thanks for the tutorial! I am starting with Godot and this helped me a lot to go through it.

  • @SuperfluousJ
    @SuperfluousJ 2 месяца назад

    2:00:20 they fixed that bug with the icon not changing when you change a node type. In 4.2.2 my icon changed. :)

  • @SuperfluousJ
    @SuperfluousJ 2 месяца назад

    I'm coming back to programming with the hopes to write games, after decades of not writing a single program line. I watched a dozen videos and followed multiple tutorials and each one bounced off my brain... until this one. I'm only 1/4 of the way through but I'll be watching the whole way, coding along with you, and by now it's clear that the knowledge and confidence I gain from this will get me on the path I need to be on. Thank you!

  • @MelDeVesci-py8em
    @MelDeVesci-py8em 2 месяца назад

    You didn't only say "how", but explained why, and which ways of doing things that are future-proof because you're justifying the "why"s with positive composition habits. Thank you so much, the tutorials so far have been specific to one context, or example, but not many explanations as to why or why not to do something a certain way. I had trouble with the layers and masks, it not being reflected in a value or in the UI elsewhere if it changes, where to place scripts depending on what I wanted them to effect/what went in them, when it is appropriate to use export/global variables and constants, what is best to put in the autoload, the fact that you can even make a sibling node to the main node, etc. ALL these things caused me so much frustration when going from following a tutorial of somebody else's to a T, and then going "Well now I want to make changes besides these ones" and breaking things unintentionally. Thanks a lot for making a tutorial in what must be the best teaching style for me, based on how much clicked!

  • @juliuschangi
    @juliuschangi 3 месяца назад

    you are awesome! thanks a lot for all the help <3

  • @Lmfaocj
    @Lmfaocj 3 месяца назад

    Wouldn't a dictionary of callables or something like that have a similar effect? I'm a beginner at coding. I just am trying to figure out why that couldn't replace this.

  • @mathusuthanvenkatesan
    @mathusuthanvenkatesan 3 месяца назад

    Took me a couple of weeks, but I'm finally done! I no longer feel like I'm just hacking things together and seeing what sticks... This kind of a structured approach to gamedev is absolutely amazing. A huge thanks to its creators!

  • @PubliusMontis
    @PubliusMontis 3 месяца назад

    Maybe checking all the scripts files at the start of the execution when the singleton is ready, get all the files .gd, check if they have the interface variable, then assert if the methods exist and so on. This is totally independent of the node tree and would crash faster

  • @huseyindag2811
    @huseyindag2811 3 месяца назад

    Abledoooooooo

  • @VarunSingh-mj6xc
    @VarunSingh-mj6xc 3 месяца назад

    Renamed play_system.gd to strike_system.gd Chabane wants the play system to be concerned with only the mechanics of striking the cue_ball. Realized his intent 7ish hours deep into the tutorial. Thanks for pulling an all-nighter for the community @tutemic

  • @KevlarKoat
    @KevlarKoat 3 месяца назад

    It's an honour to learn from such an honourable man! I'm with you on all fronts, brother. No matter the risk. This is why I make video games.

  • @kureck
    @kureck 3 месяца назад

    Hello, amazing video! I have this _on_sleeping_state_changed and I noticed the sleeping keeps switching from true to false constantly even with the ball stopped. Do you have any idea why this might happens? Thanks

    • @kureck
      @kureck 3 месяца назад

      I had to comment this part to make it work: func _integrate_forces(state): linear_velocity.y = min(Ball.DIAMETER, linear_velocity.y)

  • @johnmerriam7844
    @johnmerriam7844 3 месяца назад

    Excellent tutorial thank you

  • @PhotoPunk79
    @PhotoPunk79 3 месяца назад

    And Why are there skulls on our uniform? Are "we" the baddies? 😁

  • @sinnamonstickgaming8145
    @sinnamonstickgaming8145 3 месяца назад

    I'm encountering a lot of errors while watching this video, this video might be outdated or I'm just dumb. (most likely the second one)

  • @johnmerriam7844
    @johnmerriam7844 3 месяца назад

    26:01 Emperor penguin