All Activity
- Yesterday
-
Movement Controller Intermittent Physics Issues + Slope Handling Problems
Josh replied to vega's topic in Bug Reports
To fix your project to work with 5.0.2 beta, you must do the following: In the project manager, press the Sync button to copy the new DLLs into your project folder. Follow the instructions here to add the gameinput package to your project. This adds support for the new low-latency mouse input features: https://www.leadwerks.com/community/topic/61318-release-notes/page/37/#findComment-320871 -
Josh started following FPSPlayer collides with shadows
-
Nice to hear! I will check this out and see if I can produce the same error. I literatlly just uploaded a fix on the beta branch for something that might be related to this.
-
Movement Controller Intermittent Physics Issues + Slope Handling Problems
Josh replied to vega's topic in Bug Reports
Fix is available here: -
5.0.2 A fix is available for a problem with player collision against some convex hull shapes. A big thanks is due to Julio Jerez, the author of Newton Dynamics, for finding the root cause and fixing it quickly. The following DLLs are now required in your project. Sync the project to get these DLLs: dContainers.dll dContainers_d.dll dCustomJoints.dll dCustomJoints_d.dll Newton.dll Newton_d.dll With this problem fixed, plus the improvements to timing and low-latency mouse input, Leadwerks can now provide very good support for fast-paced twitch shooters where you are running around a level at high speeds.
-
scarp joined the community
-
jussi started following FPSPlayer collides with shadows
-
Hi, I'm new here. First of all, thank you for your work, I'm glad to see new game engines on the market. I just downloaded Leadwerks. One thing I noticed in my first test: 1. Create a terrain 2. Create a Box 3. Create a Point Light 4. Create a camera with FPSPlayer component The result is that the player collides with the boxes shadow. I am able to push the box from all sides where there is no shadow, but on the shadow sides the box is kinetic/immovable. Here is a short video to visualize what I mean: https://streamable.com/1wdmub The camera and FPSPlayer are default. Here are the properties of the box:
-
jussi joined the community
-
Josh started following There is dotnet documentation but not dotnet library ?
-
There is dotnet documentation but not dotnet library ?
Josh replied to the_qult's topic in Programming
It is true that these files exist in the Github repo, but that does not mean C# is supported...at this time... -
the_qult started following There is dotnet documentation but not dotnet library ?
-
Hello, I know perfectly well that the supported language is C++ and not C#, but while reading the documentation, I came across the documentation for dotnet. And it's even up to date, with the last commit being 8 months ago. Documentation/CS at master · Leadwerks/Documentation It's just that I can't find the library I'm supposed to link to. What am I missing?
-
Namelessbrown changed their profile photo
-
the_qult joined the community
-
Namelessbrown joined the community
-
Movement Controller Intermittent Physics Issues + Slope Handling Problems
vega replied to vega's topic in Bug Reports
Thank you! I appreciate how serious you take bug reports, even from individuals. -
reepblue started following I played all games presented at the Winter Games 2025...
-
My next game will not be VR. I just felt like the engine needed a VR game for testing. I didn't expect a lot of plays but it was the only type of game I can do quickly with my schedule.
-
CLSScript joined the community
- Last week
-
Movement Controller Intermittent Physics Issues + Slope Handling Problems
Josh replied to vega's topic in Bug Reports
It's fixed. I will have an update tomorrow. I have to put things back together now. -
Josh started following Loading map from memory does not work.
-
The documentation here is slightly wrong, and this overload is not exposed in the Lua API. I have fixed both problems and they will be available in the next update.
-
Movement Controller Intermittent Physics Issues + Slope Handling Problems
Josh replied to vega's topic in Bug Reports
The developer of Newton has confirmed there is a bug in the physics engine. He is investigating... -
eeeeeffggf joined the community
-
Friends, I didn't mean to offend or insult anyone with my comments about the games participating in the game jam. I simply watched each game from a regular player's perspective and wrote a comment about my impressions. If a game didn't launch or I didn't understand how it worked within the first few seconds, I wrote about it directly. This doesn't mean your game is bad. I spent some time testing each game and, for the sake of the jam's progress, wrote about my impressions. A modern player won't waste time and effort trying to figure out how to play a game; they'll simply request a refund on Steam.
-
Yue started following TCR Template for real-time resolution change, (Lua)
-
13 downloads
This is a template that you are free to use to understand how to implement a hot resolution change within a scene in Leadwerks. It is only a template, and its purpose is to help you understand how it should be done. You will implement the rest in your game settings options menu. This is Lua Script. Main file and Classes directory. -
Saint joined the community
-
guido892 started following SetOrder Widget?
-
i think this can you help you : https://www.leadwerks.com/learn/Widget_SetShape?lang=lua
- 1 reply
-
- 1
-
-
I'm curious how you "ran out of ammo" in a game with infinite ammo. R is the reload key, as per the standard for the last twenty years or so. I also highly doubt the monster was stuck. The monsters target the barricade, not the player. Once the barricade is destroyed, they will target the player. I'd appreciate it if you'd actually play the game before posting more misinformation about it.
-
When I launched Lyburnum, the monster was stuck in objects and couldn't move, so it couldn't damage the character. I quickly ran out of ammo, but the monster remained alive. I ran around the level but couldn't find any more ammo. Escape from Vostorg uses a third-person view, so the character controller was written from scratch. In your game, the character controller is indistinguishable from the standard FPS Controller.lua. My character can move left and right; you just don't have to press two keys at the same time (forward and sideways). The character doesn't move diagonally due to the lack of appropriate animations. All the objects in your game are standard, which is not bad, but nothing new.
-
mdgunn started following Prefab sub-objects orientation
-
As MonkeyFrog mentions I think this greyboxing/prototyping subject could be a large part of the issue. This is my preferred way of trying to work and it feels like Leadwerks should support it well . Brushes can be effective as simple objects. My winter game had 71 objects based on brushes and no 3d meshes. This SHOULD be where some of the Leadwerks FUN is, and it almost is, but then it feels like it doesn't work out and gets painful (...so...basically the opposite of fun). However it feels like it SHOULD work and should only be a checkbox or menu item away but currently it feels like a bit of a battle. There may be 2 broad sets of users. One set may be using more of a greyboxing/prototyping users approach. The other users probably use more predefined 3d imported models with well defined subobjects. Prototypers are going to be composing objects with parts which are not yet set in stone as well defined subobjets and for whom it is more important that updates carry to children. The other people have objects more often set in stone so want to retain sub object transforms. Would it not help if people could CHOOSE to pull the master prefab to the instance again. Part of the issue is that the manual way, which I suppose is the current 'solution' is to delete, re-add, reposition, which feel like no solution at all. Seems there should be other options here. Do neither of these work?..... 'REPLACE PREFAB' CONTEXT MENU ITEM: Allow a user to replace a prefab with another prefab. If it defaults to assuming the current filepath then it acts like an instance re-sync but you can change path to be a different object altogether if you want. Retains transforms that previous prefab has so it is same scale, orientation as before at top level node but actual sub-objects are reset (unless there is a way they can be matched). 'INSTANCE OUT OF DATE' UI INDICATIONA AND 'RESYNC ONE/ALL' CONTEXT MENU ITEM: There may be more complicated ways to do this but the basic idea is that Prefabs can tell when they are not in sync with the master and indicate this (by colour etc) and the user themselves chooses if they want to take the parent again (they will lose transforms unless this can be carried through). Couldn't there just be a guid or hash (based on file content or something) in the master prefabs and the instance get given that GUID/hash when created and when the master is resaved it gets a new GUID and the editor can check prefabs (based on matching filepath) and indicate in UI the prefabs where their GUid/hash does not now match the master prefab. Maybe when updating one there is additional menu item or checkbox to replace all. Hopefully this fits with UNDO system and you can step that action back should you notice you wanted only some to be affected and you can then do individuals. Maybe a plugin script thing could do one or both of these but most users are likely to not know how to deal with that. The source engine stuff sounds good too but initially maybe there is some simple option where you can just see an instance is out of date and pull again if you want to would help. Just flat out replacing a prefab with same/other seems useful to me as just a general option also.
-
Simplified code, the application crashes in LoadScene. local displays = GetDisplays() local window = CreateWindow("Leadwerks", 0, 0, 1280, 720, displays[1], WINDOW_CENTER | WINDOW_TITLEBAR) local framebuffer = CreateFramebuffer(window) local world = CreateWorld() local camera = CreateCamera(world) camera:SetClearColor(0.125) camera:SetPosition(0, 0, -2) local buffer = LoadBuffer("Maps/Mars.map") local stream = CreateBufferStream(buffer) local jsonEnd = 0 for i = 0, buffer:GetSize() - 1 do if buffer:PeekByte(i) == string.byte('}') then jsonEnd = i end end local jsonStream = CreateStreamBuffer(stream, 0, jsonEnd + 1) local binstream = CreateStreamBuffer(stream, jsonEnd + 1, buffer:GetSize() - jsonEnd - 1) local scene = LoadScene(world, jsonStream, binstream) while window:KeyDown(KEY_ESCAPE) == false and window:Closed() == false do world:Update() world:Render(framebuffer) end
-
Yue started following Loading map from memory does not work.
-
-- Configuración mínima local displays = GetDisplays() local window = CreateWindow("Leadwerks", 0, 0, 1280, 720, displays[1], WINDOW_CENTER | WINDOW_TITLEBAR) local framebuffer = CreateFramebuffer(window) local world = CreateWorld() local camera = CreateCamera(world) camera:SetClearColor(0.125) camera:SetPosition(0, 0, -2) Print("=== CARGA DIRECTA DESDE BUFFER ===") -- 1. Cargar archivo completo a buffer Print("1. LoadBuffer('Maps/Mars.map')...") local buffer = LoadBuffer("Maps/Mars.map") if buffer == nil then Print("Error: LoadBuffer falló") return end Print(" Buffer: " .. buffer:GetSize() .. " bytes") -- 2. Crear BufferStream desde el buffer Print("2. CreateBufferStream(buffer)...") local stream = CreateBufferStream(buffer) if stream == nil then Print("Error: No se pudo crear stream") return end -- 3. Crear binstream vacío (requerido por LoadScene) Print("3. Creando binstream...") local binstream = CreateBufferStream() -- 4. Intentar carga directa desde buffer Print("4. LoadScene(world, stream, binstream)...") stream:Seek(0) binstream:Seek(0) local scene = LoadScene(world, stream, binstream) if scene == nil then Print("❌ FALLO: No se pudo cargar desde buffer") else Print("✅ ÉXITO: Escena cargada directamente desde buffer") end -- Loop mínimo while window:KeyDown(KEY_ESCAPE) == false and window:Closed() == false do world:Update() world:Render(framebuffer) end The entire file enters the buffer. Print("=== CARGA COMPLETA DE ARCHIVO A BUFFER ===") -- 1. Cargar archivo COMPLETO con LoadBuffer Print("1. Cargando archivo con LoadBuffer...") local buffer = LoadBuffer("Maps/Mars.map") if buffer == nil then Print("❌ LoadBuffer falló - el archivo no se pudo cargar") return end local bufferSize = buffer:GetSize() Print("✅ Buffer creado: " .. bufferSize .. " bytes") -- 2. Mostrar información general Print("\n2. Información del buffer:") Print(" - Tamaño total: " .. bufferSize .. " bytes") Print(" - Primer byte: " .. buffer:PeekByte(0) .. " (ASCII: " .. string.char(buffer:PeekByte(0)) .. ")") Print(" - Último byte: " .. buffer:PeekByte(bufferSize-1)) -- 3. Mostrar los primeros 500 bytes (como texto y hex) Print("\n3. Primeros 500 bytes del archivo:") local textPreview = "" local hexPreview = "" for i = 0, math.min(499, bufferSize-1) do local byte = buffer:PeekByte(i) -- Versión texto (solo caracteres imprimibles) if byte >= 32 and byte <= 126 then textPreview = textPreview .. string.char(byte) else textPreview = textPreview .. "." end -- Versión hexadecimal hexPreview = hexPreview .. string.format("%02X ", byte) if (i+1) % 16 == 0 then hexPreview = hexPreview .. "\n" end end Print(" Como texto (imprimible):") Print(" " .. textPreview) Print("\n En hexadecimal:") Print(" " .. hexPreview) -- 4. Mostrar los últimos 500 bytes Print("\n4. Últimos 500 bytes del archivo:") if bufferSize > 500 then local startPos = bufferSize - 500 local textEnd = "" local hexEnd = "" for i = startPos, bufferSize-1 do local byte = buffer:PeekByte(i) if byte >= 32 and byte <= 126 then textEnd = textEnd .. string.char(byte) else textEnd = textEnd .. "." end hexEnd = hexEnd .. string.format("%02X ", byte - startPos) if (i - startPos + 1) % 16 == 0 then hexEnd = hexEnd .. "\n" end end Print(" Como texto (imprimible):") Print(" " .. textEnd) else Print(" (El archivo es demasiado pequeño para mostrar últimos 500 bytes)") end -- 5. Buscar la transición de JSON a datos binarios Print("\n5. Analizando estructura del archivo:") local nullByteCount = 0 local jsonEnd = nil -- Buscar bytes nulos (0x00) que indican datos binarios for i = 0, math.min(1000, bufferSize-1) do if buffer:PeekByte(i) == 0 then nullByteCount = nullByteCount + 1 if jsonEnd == nil then jsonEnd = i Print(" - Primer byte nulo (0x00) en posición: " .. i) end end end Print(" - Bytes nulos en primeros 1000 bytes: " .. nullByteCount) Print(" - JSON probablemente termina cerca del byte: " .. (jsonEnd or "no encontrado")) -- 6. Verificar si es JSON válido Print("\n6. Verificando si es JSON válido:") local firstChar = string.char(buffer:PeekByte(0)) local secondChar = string.char(buffer:PeekByte(1)) Print(" - Primeros caracteres: " .. firstChar .. secondChar) if firstChar == "{" then Print(" ✅ Comienza con '{' (JSON válido)") -- Buscar la última llave de cierre local lastBrace = -1 for i = 0, bufferSize-1 do if buffer:PeekByte(i) == string.byte("}") then lastBrace = i end end if lastBrace > 0 then Print(" - Última '}' en posición: " .. lastBrace) Print(" - Tamaño del JSON: ~" .. (lastBrace + 1) .. " bytes") Print(" - Datos binarios después: ~" .. (bufferSize - lastBrace - 1) .. " bytes") end else Print(" ❌ No comienza con '{' (no es JSON puro)") end Print("\n=== ANÁLISIS COMPLETADO ===")
-
Firstly, there is not one monster. There is one monster on wave 1, and the monster count increments at the end of every wave. If you manage to reach wave 50, you will be fighting 50 monsters simultaneously. Between waves, the player must allocate hours toward searching for weapons, searching for survivors, and repairing the barricade in order to begin the next wave. The system is central to the game loop and is what allows the player to survive increasing enemy counts. If you didn't experience this, you likely didn't progress beyond the first wave. The game uses a consistent art style, achieved through a shader. This is in direct contrast to Escape from Vostorg, which uses a hodgepodge of high-resolution textures mixed with materials that don't visually align. The game also has a fully functioning character controller, including the ability to move forward or backward while strafing left or right simultaneously, something notably missing from Escape from Vostorg. As for the game being "small": the level is intentionally contained. You are not meant to explore; you are meant to defend your barricade. Failing to do so results in death. This doesn't make the game small; it makes it focused. In fact, it has far more replay value than Escape from Vostorg, since players can experiment with different strategies to reach higher wave counts. There is also a restart button, allowing the game loop to begin again immediately after losing, something Escape from Vostorg lacks. The game includes sound, another feature missing from Escape from Vostorg. You can alt-tab freely while playing my game and still control your mouse. Escape from Vostorg locks the cursor, requiring the game to be paused before alt-tabbing. If we're going to talk about "small," I was able to complete Escape from Vostorg in 33 seconds. Once completed, there was no way to replay the game, as there is no restart functionality. On top of that, the character controller in Escape from Vostorg barely functions. The camera constantly clips into the player's head, which is genuinely nauseating. The lives counter does not work, and there are numerous ways to animation-lock the player and completely break the enemy AI. I would strongly suggest referring to Escape from Vostorg as a much clearer example of incompetence.
-
Movement Controller Intermittent Physics Issues + Slope Handling Problems
Josh replied to vega's topic in Bug Reports
Another video demonstrates how to reliably create the error: -
I just render a splash screen with a logo on it until the start render event fires. Sometimes there is a millisecond of white but it's nothing to lose sleep over.
-
omena_mestari joined the community
-
omena mestari joined the community
-
I still say we should still have something like the Source Engine instance system. https://developer.valvesoftware.com/wiki/L4D2_Level_Design/VMF_Instances https://developer.valvesoftware.com/wiki/Working_with_instances If prefabs are going to be left flexible, then I want a system where I can make objects as map files and expose the I/O and some entity values to the main scene. the flow graph communications should also still work from the instance.
-
This game isn't for a GameJam. As @Josh said in one of his podcasts: "don't make me read too much". I read the PDF with the rules and strategies twice, but I didn't understand anything. I think a game for a GameJam should be easy to learn, and yes, it should have a unique feature, but I don't want to have to work hard to play this game. Everything is very well done and beautiful, with nice sounds.