Jump to content
  • entries
    941
  • comments
    5,894
  • views
    869,340

About this blog

Learn about game development technology

Entries in this blog

Dev Log

My last NASA project is complete. There's a physics bug in Leadwerks 4.6 that will get resolved this weekend. Starting Monday I am going to focus on the new engine again and move us forward so we can release in 2020. I am really looking forward to getting back in the game.

Josh

Josh

Trials and Tribulations

After about four days of trying to get render-to-texture working in Vulkan, I have everything working except...it doesn't work. No errors, no clue what is wrong, but the renderer is not even clearing the depth attachment, which is why the texture read shown here is flat red. There's not much else to say right now. I will keep trying to find the magic combination of cryptic obscure settings it takes to make Vulkan do what I want. This is very hard stuff, but once I have it working

Josh

Josh

Scenes, prefabs, and the Lua state serialization that loves them

The beta testers and I are are discussing game programming in the new engine. I want to see C++, Lua, and C# all take a near-identical approach that steals the best aspects of modern game programming and ditches the worst, to create something new and unique. To that end, we are developing the same simple game several times, with several different methodologies, to determine what really works best. One thing I realized quickly was we really need a way to load prefabs from files. I started im

Josh

Josh in Articles

Real-time Global Illumination: Introducing Latency

Since previously determining that voxels alone weren't really capable of displaying artifact-free motion, I have been restructuring the GI system to favor speed with some tolerance for latency. The idea is that global illumination will get updated incrementally in the background over the course of a number of frames, so the impact of the calculation per frame is small. The new GI result is then smoothly interpolated from the old one, over a period of perhaps half a second. Here's a shot of the r

Josh

Josh in Articles

Shadow Filtering

Happy Friday! I am taking a break from global illumination to take care of some various remaining odds and ends in Ultra Engine. Variance shadow maps are a type of shadowmap filter technique that use a statistical sample of the depth at each pixel to do some funky math stuff. GPU Gems 3 has a nice chapter on the technique. The end result is softer shadows that run faster. I was wondering where my variance shadow map code went, until I realized this is something I only prototyped in OpenGL a

Josh

Josh in Articles

Bug fix patch for 3.0

An update has been posted with the following fixes: http://www.leadwerks.com/werkspace/topic/7847-undo-does-not-refresh-gizmos/ http://www.leadwerks.com/werkspace/topic/7842-bsp-mesh-export/

Josh

Josh

How to Fix Slow Windows 10 (this week)

Here are some things I did in the last couple days to fix a computer that was basically unusable. It seems that Superfetch was rebranded to "SysMain" in an update and automatically re-enabled. If your computer is grinding away either the CPU or disk usage while doing nothing, this is the culprit. Disable it in Windows services. The XBox games bar is suspect. I recommend disabling it now that FRAPS supports Vulkan. Some features in Visual Studio are making it unusably slow. In

Josh

Josh

Organizing the New Engine

The addition of our plugin system makes the engine feel different. There is a stronger distinction between core and non-essential functionality. I removed a lot of third-party libraries from the project and am just focusing on graphics, physics, pathfinding, and other features that are core to the functioning of your game. Things like file importers terrain generation, etc. can be stored away in self-contained optional plugins, or can be part of the editor project, and do not need to reside in t

Josh

Josh

Voxel Cone Step Tracing - Emission and Motion

Adding emission into the cascaded voxel cone step tracing global illumination and dynamic reflections system (SEO ftw) was simple enough: There's some slight trailing but it looks okay to me. There is a bit of a "glitch" in that when the emissive surface gets near the wall, the ambient occlusion kicks in, even though the sphere is self-illuminating. This happens because the emission color is mixed with the light voxel during the rasterization step. I could fix this by storing emis

Josh

Josh in Articles

An interesting fix

You may have noticed our deferred decals (presently in beta) tend to shift with distance. Something was wrong with the screen space to world space conversion, but it's a hard problem to describe. I wrote a function based on the work Igor did for his SSLR shader, like this: vec4 ScreenPositionToWorldPosition(in vec2 texCoord) { float x = (texCoord.s / buffersize.x - 0.5) * 2.0; float y = (texCoord.t / buffersize.y - 0.5) * 2.0; float z = texelFetch(texture5, ivec2(texCoord),gl_Sampl

Josh

Josh

Even more GUI design + Rooster teeth

This code added to main.lua actually works: --Create a window local windowstyle = window.Titlebar if System:GetProperty("fullscreen")=="1" then windowstyle=windowstyle+window.FullScreen end window=Window:Create(title,0,0,System:GetProperty("screenwidth","1024"),System:GetProperty("screenheight","768"),windowstyle) window:HideMouse() --Create the graphics context context=Context:Create(window,0) if context==nil then return end --Create a GUI local gui = GUI:Create(context) local widget = Wid

Josh

Josh

Joint Class Finished

I'm happy to say the physics joint class in the new engine is completed. I made all the members that are not meant to be accessed private. One interesting part is the parent and child public members, which are constant pointers to private members. This should result in a read-only member in C++. A sol property is used to expose this to Lua in a read-only manner. The upvector joint will align an object's Y axis to any vector you set, but still allow rotation around the axis. This is perfect

Josh

Josh

Vulkan Shader Uniforms

In Vulkan all shader uniforms are packed into a single structure declared in a GLSL shader like this: layout(push_constant) uniform pushBlock { vec4 color; } pushConstantsBlock; You can add more values, but the shaders all need to use the same structure, and it needs to be declared exactly the same inside the program. Like everything else in Vulkan, shaders are set inside a command buffer. But these shader values are likely to be constantly changing each frame, so how do you hand

Josh

Josh

Leadwerks 5 Beta Update Available

A new update is available to beta testers. I updated the project to the latest Visual Studio 16.6.2 and adjusted some settings. Build speeds are massively improved. A full rebuild of your game in release mode will now take less than ten seconds. A normal debug build, where just your game code changes, will take about two seconds. (I found that "Whole program optimization" completely does not work in the latest VS and when I disabled it everything was much faster. Plus there's the precompile

Josh

Josh

Version 4.5 release plan

Version 4.5 will feature official support for VR (Vive and Oculus) and a new super realistic vehicle system.  These features are more or less already done, but need some work to make them release-ready.  The new vehicle system is so good, and I am so grateful to Julio for his help making this happen, that I think we might do a racing-themed winter tournament.   I am trying to think of a clever pun to call it. At the same time, I have implemented the first build of version 5 in the same sour

Josh

Josh

New Patch Available

A bug fix patch has been uploaded. Run the Leadwerks updater to download the new files. You may need to update projects (see File > Project Manager) and recompiled.   Recent bug fixes can be viewed here: http://www.leadwerks.com/werkspace/forum/80-bug-reports/   Additionally, the following improvements were made: Physics interpolation will be much smoother now. Character controller was adjusted, works great on terrain. A bug in the PhysicsSetRotation() command was fixed, though

Josh

Josh

Writing the Treeview Widget

I've begun a Lua script for a Treeview widget. This is arguably one of the most complex widgets to implement, but after having done this in another language I have a design that I think is pretty simple. The script sorts all tree view nodes into a linear list-like table so that they can be drawn quickly. Like other widgets, the script will calculate where the starting point in the list is to display just the visible nodes. This is very important because it prevents the program from slowing d

Josh

Josh

Android Ahead

I hired a local Android developer to get Leadwerks 3.0 running on Android devices. We don't know a lot yet, other than that we have an OpenGLES renderer, and everything should be cross-platform compilable. The Android version of LE3 is using a minimum requirement of Android 2.2, which is the lowest version that supports OpenGL ES 2.0. This will run on about 75% of Android devices:     As you can see here, the proportion of 2.1 devices is steadily dropping. If a linear rate of decrease i

Josh

Josh

Plans In Motion

About a year ago, before I even had my cool hat, I wrote a blog post called What's the Big Idea? that talked about some big-picture ideas about where Leadwerks is going: Well, a year later, this idea is coming to fruition. I previously broke down the user journey into Education, Collaboration, Promotion, and Distribution. This has now been distilled down to the new Leadwerks tagline: Learn, Build, Play. I had our logo reworked and I am very proud to present to you this beautiful design:  

Josh

Josh

Beta update available

An update is available on the beta branch, which includes the editor and Lua executables, for Windows only. The following issues are resolved: http://www.leadwerks.com/werkspace/topic/14934-materials-go-crazy-when-used-on-a-prefab/ http://www.leadwerks.com/werkspace/topic/15644-latest-43-beta-causes-crawler-to-rotate-at-wrong-direction/ http://www.leadwerks.com/werkspace/topic/15597-wrong-issues-with-z-sort-materials/#entry104462

Josh

Josh

4.5 beta update 5

Version 4.5  is updated on the beta branch on Steam. Fixed small projection error in VR mode. Added fog settings in editor and into map file format. Fixed Workshop browser back button not working. Added VR project template. Added VR player script Added friction to hinge joint script. Added ball and slider joint scripts. Joint scripts will now use the entity parent for the other joint connection (if it exists). We've only got about 24

Josh

Josh

Leadwerks Game Engine 4.2 RC3

A new build is available on the beta branch: Fixed character controller physics. Added SSR effect in AI & Events maps. Renamed "Advanced FPS template" to "FPS template". Toned down specular reflection on crawler skin. Updated syntax highlighting for new commands. Fixed quaternion Slerp function creating nan values with GCC release build. Fixed Linux mouse down/hit bugs.

Josh

Josh

Game Launcher now runs on SteamOS

Leadwerks Game Launcher can now be used on SteamOS. I fixed a bunch of little issues that were preventing this from running. The interface is not optimal right now for controllers, and there is much left to do, but your games do run. It's pretty fun to play your games on a console, when most of them were developed on Windows and never even run on Linux before.   If you have a Steam Machine give it a try!  

Josh

Josh

Streaming Terrain in Leadwerks Game Engine 5

The terrain system in Leadwerks Game Engine 4 allows terrains up to 64 square kilometers in size. This is big enough for any game where you walk and most driving games, but is not sufficient for flight simulators or space simulations. For truly massive terrain, we need to be able to dynamically stream data in and out of memory, at multiple resolutions, so we can support terrains bigger than what would otherwise fit in memory all at once. The next update of Leadwerks Game Engine 5 beta suppo

Josh

Josh

Leadwerks dedicated server

We've transferred the site data to a dedicated server hosted with wiredtree. I've filed a ticket with invision power services to configure the new server. When that is confirmed to be working I'll retransfer the database to make sure all posts are saved and change the domain nameservers and A record.   I also have an update for the site skin that is supposed to fix most of the issues reported, but I want to make sure things are working right before installing it.   Then we'll get back to w

Josh

Josh

×
×
  • Create New...