Josh Posted August 19, 2025 Author Posted August 19, 2025 I could also see a series on just using the built-in stock components. Simply setting up a navmesh and adding a monster makes a pretty compelling lesson. Maybe this series should come first, before the dive into programming. Quote Let's build cool stuff and have fun.
The Mover Cell Posted August 20, 2025 Posted August 20, 2025 Honestly I recommend moreso individual tutorials in actual mechanics instead of broader stuff Also I heavily recommend explaining the important "backend" mechanics(like level transitions, or making "fairer" enemies that don't attack all at once) Quote hi there
Josh Posted August 20, 2025 Author Posted August 20, 2025 7 hours ago, The Mover Cell said: Honestly I recommend moreso individual tutorials in actual mechanics instead of broader stuff Please be specific. Quote Let's build cool stuff and have fun.
Josh Posted October 11, 2025 Author Posted October 11, 2025 Okay, so my current thinking, and going along the lines of what we already have, is this: Crash Course Gameplay (just using the default scripts) Programming 3D Spatialization Position and 3D vectors Dot product Cross product ATan Rotation Euler angles Gimbal lock Quaternions Spherical linear interpolation Space Transformations Transform point, vector, normal, quaternion, plane 4x4 matrices Camera Projection Axis-aligned bounding boxes Planes Convex volumes / brushes Game Mechanics Ray Casts Proximity Test / World::GetEntitiesInArea World:GetEntities (using filters) Object Spawning and Deletion Pathfinding Game Physics Mass Velocity Force and Torque Player Controller Collision Triggers Collision Types Intersection Joints 9 Quote Let's build cool stuff and have fun.
Josh Posted November 6, 2025 Author Posted November 6, 2025 Okay, the 3D spatialization series is ready now: https://www.leadwerks.com/learn/1dspace 2 Quote Let's build cool stuff and have fun.
Josh Posted November 17, 2025 Author Posted November 17, 2025 Game Mechanics series is written: https://www.leadwerks.com/learn/gamemechanics 2 Quote Let's build cool stuff and have fun.
Josh Posted November 20, 2025 Author Posted November 20, 2025 Videos are now available for the Game Mechanics series. Please let me know if you find these helpful: https://www.leadwerks.com/learn/gamemechanics 3 Quote Let's build cool stuff and have fun.
yurembo Posted November 21, 2025 Posted November 21, 2025 This is awesome! And samples are great! But there is not GetVisible() method. 1 Quote https://www.t2d-dev.ru/ https://yurembo.com/
Josh Posted November 21, 2025 Author Posted November 21, 2025 3 hours ago, yurembo said: This is awesome! And samples are great! But there is not GetVisible() method. Are you using Leadwerks on Steam, beta branch? Quote Let's build cool stuff and have fun.
yurembo Posted November 21, 2025 Posted November 21, 2025 1 hour ago, Josh said: Are you using Leadwerks on Steam, beta branch? Yes, I have double rechecked. 1 Quote https://www.t2d-dev.ru/ https://yurembo.com/
Josh Posted November 22, 2025 Author Posted November 22, 2025 I think your project needs to be updated. I just created a new project and ran this code, and it says the type is "function": local p = CreatePivot(nil) Notify(type(p.GetVisible)) if true then return end https://www.leadwerks.com/learn/projectmanager 1 Quote Let's build cool stuff and have fun.
yurembo Posted November 22, 2025 Posted November 22, 2025 I have updated my project but everything is the same. You can see this error in the image number one. Then I try to execute your code statement: result is nil (look picture number two). If I write: local p = CreatePivot(nil) Notify(type(p.GetEnabled)) if true then return end The label in the message box is: "function" like you said in the previous post. Quote https://www.t2d-dev.ru/ https://yurembo.com/
Josh Posted November 22, 2025 Author Posted November 22, 2025 You are using Ultra Engine. Use Leadwerks and opt into the beta branch. 1 Quote Let's build cool stuff and have fun.
yurembo Posted November 22, 2025 Posted November 22, 2025 I'm a little confused. I thought I should use the Ultra Engine beta. Now everything is working correct. 2 Quote https://www.t2d-dev.ru/ https://yurembo.com/
khotan Posted November 25, 2025 Posted November 25, 2025 On 10/11/2025 at 5:17 PM, Josh said: Okay, so my current thinking, and going along the lines of what we already have, is this: Crash Course Gameplay (just using the default scripts) Programming 3D Spatialization Position and 3D vectors Dot product Cross product ATan Rotation Euler angles Gimbal lock Quaternions Spherical linear interpolation Space Transformations Transform point, vector, normal, quaternion, plane 4x4 matrices Camera Projection Axis-aligned bounding boxes Planes Convex volumes / brushes Game Mechanics Ray Casts Proximity Test / World::GetEntitiesInArea World:GetEntities (using filters) Object Spawning and Deletion Pathfinding Game Physics Mass Velocity Force and Torque Player Controller Collision Triggers Collision Types Intersection Joints Nice to update here your work Please keep it up and thanks for sharing Quote
Vladimir Sabantsev Posted December 24, 2025 Posted December 24, 2025 Hi, I've noticed that a neither tutorial page for Collision or API documentation mention an "in-out" trigger volume implementation - they only mention "on enter" trigger (which is in fact "is in" trigger), but no "on exit" trigger. Would be nice to logically separate Leadwerks::Component::Collide into Leadwerks::Component::ColideBegin, Leadwerks::Component::ColideContinues, Leadwerks::Component::ColideEnd to ease implementation of trigger volumes switches (e.g. a pressure plate). Also, there should be an easy way to visually debug collision meshes and physics movement vectors - it eases prototyping by a lot. Not sure if it still applies because I have quite an old version of engine right now, but I've noticed that all the default C++ components have a "virtual method" syntax instead of "method override"- it's a bad practice, because it silences the E1455 "member function declared with 'override' does not override a base class member" which will be triggered in case if the base class method declaration has been changed. As a result, anyone who is using this syntax together with rich inheritance structure and non-pure virtual methods risks to define a method that won't be called after introducing a change in the base class declaration. This semantic mistake can be very irritating and confusing for someone who is learning C++, it's better to teach people to be precise about it. Merry Christmas to everyone reading it on the day it was posted! 1 Quote
Vladimir Sabantsev Posted December 24, 2025 Posted December 24, 2025 What a great implementation and tutorial for Pathfinding! The only miss I can see is that API lacks an ability to get a path that a NavAgent is currently aiming to take. It would be great for strategy games (display the path so that one can plan intermediate steps before sending the troops in) and for multiplayer games (ensure sync btw server and client). I can see there is a Leadwerks::NavMesh::PlotPath method, but it's not quite the same. Maybe it will make sense to separate Navigate into SetDestination, StartNavigate, StopNavigate, GetCurrentPath. 1 Quote
Josh Posted December 24, 2025 Author Posted December 24, 2025 @Vladimir Sabantsev I really appreciate your in-depth feedback. I am planning to fix all bugs that can be fixed right now (a few things depend on internal refactoring) before I proceed with a new deep dive into modifications to the renderer for 5.1. The plan is to move lighting shader code into a deferred step (as Leadwerks 4 does) which I think will probably provide better optimization for low-end hardware and simpler shader code. 1 Quote Let's build cool stuff and have fun.
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.