Yue Posted Friday at 09:46 PM Posted Friday at 09:46 PM Hello everyone! I am officially joining the Leadwerks Winter Games 2025 Tournament with my project: Ingenuity Legacy. This game will be a tribute to the historic adventure of the helicopter on Mars. My goal is to capture the feeling of solitude and the technological achievement of Ingenuity on the surface of the Red Planet. Tech Specs & Tools For this tournament, I decided to go with a transparent and classic approach: Engine: Leadwerks 5. Language: Lua Script. Dev Environment: I will use the Leadwerks Map Editor for level design and Visual Studio Code for all scripting. Methodology: The project starts from scratch. I am beginning with a completely blank code file—no pre-made templates—to build the flight mechanics step-by-step. Resources: I will be using assets available from the internet for the art and environment, and I will use AI assistance to support the coding process when necessary to speed things up. Follow the Development Live I want to share the creation process with you all, from the very first line of code to the final build. I will be streaming my development sessions live on Twitch. "Spin up, take off, climb, hover, descent, landing, touchdown and spin down." Ingenuity Legacy | Leadwerks Winter Games 2025 🚁 "Altimeter data confirmed." 2 Quote Murphy's Law: We don't fix bugs, we document them as features. – Murphy Games
Yue Posted Saturday at 09:53 PM Author Posted Saturday at 09:53 PM Code Lua Script, Day One. --############################################################################-- --## ##-- --## Project : INGENUITY LEGACY ##-- --## File Name : main.lua ##-- --## Created by : Yue Rexie ##-- --## Notes : Main application entry file ##-- --## ##-- --############################################################################-- import("Class/CApp.lua") import("Class/CWorld.lua") --Create application instance local app = CApp:New("Ingenuity Legacy (Development Build 0.1 [Alpha])") local world = CWorld:New() while true do world:Update() world:Render() collectgarbage() if app:GetWindow():GetClosed() then break end end Quote Murphy's Law: We don't fix bugs, we document them as features. – Murphy Games
Yue Posted Sunday at 03:40 PM Author Posted Sunday at 03:40 PM Quote Murphy's Law: We don't fix bugs, we document them as features. – Murphy Games
Yue Posted yesterday at 01:22 AM Author Posted yesterday at 01:22 AM 1 Quote Murphy's Law: We don't fix bugs, we document them as features. – Murphy Games
Yue Posted yesterday at 07:30 PM Author Posted yesterday at 07:30 PM Quote Murphy's Law: We don't fix bugs, we document them as features. – Murphy Games
Yue Posted yesterday at 10:39 PM Author Posted yesterday at 10:39 PM Hi everyone! This is Yue. I’m continuing my journey in the Winter Games Tournament with my project: "Ingenuity Legacy". This is a very personal project for me, a tribute to that brave little helicopter, and today (Day 3) was a rollercoaster of emotions and code. I wanted to share my progress because today the project stopped feeling like a "floating mesh" and started feeling like a real machine with weight and soul. Here is what I achieved today using Lua in Leadwerks 5: Rotor Inertia & Visuals: I implemented the visual rotation of the coaxial blades. It's not just a simple loop animation; the rotation speed is code-driven by an inertia variable. When I toggle the engine off, the blades don't stop instantly—they keep spinning and slow down gradually over 30 seconds, simulating the momentum in the low-density atmosphere. Real Martian Physics: I abandoned the arcade approach (0 gravity). Now, the helicopter has a constant gravity of -3.71 (Mars gravity). The engine script calculates "Lift" based on the rotor RPM. If the engine power drops, gravity wins, and the drone falls realistically. It feels heavy now! The 24-Meter Ceiling: Did you know the real Ingenuity had a max altitude of roughly 24 meters? I implemented a "thin atmosphere" logic. If the player tries to go higher, the lift force decreases smoothly. No invisible walls, just physics saying "no more air here." Dynamic Audio: I added a drone loop that changes Pitch and Volume based on that same rotor inertia. It sounds like a giant mosquito now, very immersive! The "Bug" of the Day (The Funny Part): I spent a good amount of time fighting with the Audio. I used EmitSound, but the sound was being left behind at the spawn point (0,0,0). I tried to force SetPosition on the speaker every frame, but it was messy. Then, I realized something absurdly simple: I had created the Mouth (the Speaker on the drone), but I forgot to tell the engine where my Ears were! 😂 One simple line saved the day: _camera:Listen(). Now the audio works perfectly in 3D space. Sometimes the solution is just telling the engine: "Hey, put my ears on the camera, please!" I'm really enjoying the process and learning a lot about the new API. Thanks for reading! - Yue 2 Quote Murphy's Law: We don't fix bugs, we document them as features. – Murphy Games
Yue Posted 7 hours ago Author Posted 7 hours ago Quote Murphy's Law: We don't fix bugs, we document them as features. – Murphy Games
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.