Jump to content
  • entries
    942
  • comments
    5,897
  • views
    903,436

About this blog

Learn about game development technology

Entries in this blog

Beta Update Available

The creation of our complete tutorial series, written with the help of Aggror, has had a really good effect because it gives us a specification saying "this is how to use Leadwerks". Instead of having different approaches and opinions scattered around, we can all discuss the user experience and be on the same page. This has led to improved user feedback, as we are able to more easily identify any small hangups or inefficiencies in the workflow. I'd especially like to thank the user Malachi fo

Josh

Josh

Last Minute Improvements

We decided to make one last minute change to the material editor. The texture list is a bit easier to work with now:   Looking pretty nice on Mac, too:   We're also working on our character models for Darkness Awaits, as well as a super secret special surprise...

Josh

Josh

Multitouch Madness

I've implemented multitouch input on iOS, and gave Aria the information he needs to do the same for Android devices. Multitouch is an interesting input method. Each "touch" has a beginning, some movement, and an end. To handle multiple touches, they need to be persistent; you need to keep track of which touch is which. This is a little weird if you're coming from a mouse and keyboard paradigm.   On iOS, you have a pointer to a UITouch object, and on Android it's a jObject object (I think)

Josh

Josh

Day 877

Development of Leadwerks 3 was (theoretically) completed today. We still have a lot of testing and bug hunting to do, but all features for release are written.   This is where it started: http://www.leadwerks.com/werkspace/blog/1/entry-500-day-1/

Josh

Josh

Beta update available

A new build is available on the beta branch. The editor and Lua executables are updated, only on Windows at this time. Everything is updated, including the beta branch of Game Launcher, for Windows and Linux.   I believe I have fixed the crashing in the new light management code. I also added a small optimization that checks if a moved light has the same 4x4 matrix it did at the time of the last shadow render. This makes it so if you are standing still and nothing is moving, the flashlight

Josh

Josh

GUI Resolution Independence 2

Here are some screenshots showing more complex interface items scaled at different resolutions. First, here is the interface at 100% scaling: And here is the same interface at the same screen resolution, with the DPI scaling turned up to 150%: The code to control this is sort of complex, and I don't care. GUI resolution independence is a complicated thing, so the goal should be to create a system that does what it is supposed to do reliably, not to make complicated things s

Josh

Josh

Ultra Engine (Leadwerks 5) beta updated

A new beta is available. In this build I cleaned up a lot of internal stuff. I removed some parts of the engine that I want to redesign in order to clean up the source. JSON material files loaded from MDL files are now supported. Added ActiveWindow() command. if the game window is not the foreground window this will return null. The Steamworks and all dependent classes are temporarily removed. There's a lot of stuff in there I don't intend to use in the future like all the Worksho

Josh

Josh

Lighting optimizations in version 2.31

I got the volume intersection tests working, and it won't be hard to extend this to make trigger and fluid volumes. The image below shows a point light divided up into six volumes. Each pyramidal volume represents the camera frustum of one face of the shadow cubemap. In version 2.3 and earlier, whenever an object moves within the spherical volume of the point light, the shadow is considered invalidated, and all six faces of the shadowmap are redrawn. This is why point lights are so expensive

Josh

Josh

Navigation Win

I fixed our AI navigation problems and got pathfinding to work using navmeshes. Now you can easily make a horde of zombies chase after the player without setting up any waypoints. Which is the whole point of this, of course.   The problem had to do with a polygon filter, and I am still not sure what is going on, so I disabled it for now.  

Josh

Josh

Realistic Penumbras

Shadows with a constant softness along their edges have always bugged me. Real shadows look like this. Notice the shadow becomes softer the further away it gets from the door frame. Here is a mockup of roughly what that shadow looks like with a constant softness around it. It looks so fake! How does this effect happen? There's not really any such thing as a light that all emits from a single point. The closest thing would be a very small bulb, but that still has volume. Bec

Josh

Josh

Creating a VR Teleporter: Part 2

The next step is to put our scene into VR and look at everything. I'm about six feet tall and the player model seems the same height, so that all looks right. The controllers, as you can see below, are all working with full articulation of all controls. The teleport indicator looks good too. Now we're going to start our VR player script. We start with a new script and initialize the VR environment in the Start() function. A camera is also created in code, and I deleted the camera

Josh

Josh

Over the Hump

All difficult technical challenges for the completion of Leadwerks3D are solved. This includes navmesh pathfinding, cross-platform support, Lua and C# integration, OpenGLES rendering, the abstract driver model, etc., etc., etc. Basically, all the scary stuff is done, and the only thing that remains is hard work. I'll be turning my attention back to the editor shortly, but first I wanted to address a different kind of challenge: Documentation and the website.   The present appearance of the

Josh

Josh

Bug fix update

A new update is available on the beta branch which fixes two bugs.   Undo not working correctly with copied objects: http://www.leadwerks.com/werkspace/topic/11888-undo-after-ctrl-duplicate-is-messed-up/   Water plane movement and culling problem: http://www.leadwerks.com/werkspace/topic/11895-water-plane-doesnt-cover-all-terrain/

Josh

Josh

Sprite Layers and the GUI

For finer control over what 2D elements appear on what camera, I have implemented a system of "Sprite Layers". Here's how it works: A sprite layer is created in a world. Sprites are created in a layer. Layers are attached to a camera (in the same world). The reason the sprite layer is linked to the world is because the render tweening operates on a per-world basis, and it works with the sprite system just like the entity system. In fact, the rendering thread uses the

Josh

Josh

Editor Enhancements

I've always believed strongly that a native UI presents a cleaner, more consistent, and more beautiful interface for the user to interact with. Not only do they look better, but they present less of a learning curve because the user already knows how to interact with them. When applications move beyond competing to see who can make a better home-made button, they can focus on greater underlying functionality and stop wasting time reinventing the wheel that the operating system already provides

Josh

Josh

Leadwerks 5 Beta Update

A new update is available for beta testers. This update focuses on the GUI capabilities, mostly for interfaces created directly on a window, rather than 3D interfaces. We are moving from a Lua-driven GUI system to one coded more explicitly in C++. This will provide us with better documented behavior, easier portability, and a more responsive interface. Changes: GUI widgets no longer use Lua scripts. Each widget type has a C++ class, a creation command, and style constants. A

Josh

Josh in Articles

Getting Fun Now...

One of our design principles for Leadwerks3D is to make development fast. You need to be able to iterate and re-iterate quickly, to try out ideas and make adjustments in as few of mouse clicks as possible. A real-time properties editor is definitely one way to enable that. In the screenshot below, I can adjust the intensity and color of the light dynamically, and see the results instantly. It feels so responsive and natural.   I feel like this design philosophy gets us back to our roots wi

Josh

Josh

Icing on the Cake

I recently made two small improvements that make the editor much more fun to work with.   A shader consists of two pages of code, for the vertex and fragment programs. I originally designed the shader editor to use tabs to divide up the two code chunks. However, this meant the shader editor could have only one shader open at a time. This made copying and pasting from one shader to another rather tedious.   To improve this, I merged the shader and script editors into a single window. Mult

Josh

Josh

Beta update available

A new update is available on the beta branch on Steam. This fixes the low-res terrain shader so it compiles on AMD cards. It also fixes a possible brush rendering crash having to do with the recent optimizations made to make uncollapsed brushes draw more efficiently.

Josh

Josh

The Workshop

The Leadwerks Workshop has been evolving over the last year, and here I will talk about how it came about and where we are going with this.   What We've Learned Use of the Leadwerks Workshop has increased since the last major revision. Encouraged by this, I have added additional tools that make it easier to make models game-ready, like convex decomposition and automatic hit boxes on character models. The Steam WebAPI has been very helpful and allowed me to create a nice web-based interface

Josh

Josh

"Pumpkins in Space" worklog

I've got my models and a little time to put this together, so I am starting on my Halloween Game Tournament entry now. This will be an exercise in speed-developing!   Basically, I just want to make a game where you fly a ship through an asteroid field shooting meteors. To spice things up, I'm going to add pumpkins that appear after the first level, and are attracted to your ship:   The game asset requirements are very simple. Here are my main models:     So now I'm going to a

Josh

Josh

December 7, 2009

It's 12:30 in the morning, but I have the model scripts working the way I want. Thanks to "Nilium" for his tips, and to everyone who gave their feedback. I am confident in this revision. I have a lot of scripts that need to be slightly altered, but it's just a matter of adjusting the function structure, not really changing any existing code.   Here's the light_ambient script: require("scripts/class") require("scripts/linkedlist") local class=CreateClass(...) function class:Spawn(model) lo

Josh

Josh

OnLive Lives?

When OnLive was first announced, I thought it couldn't ever work, because of latency issues. After my recent networking work, I think it might actually be feasible. We had fast enough response times that we could play lagless games with server-controlled physics, which is similar to the way OnLive works. A lot of our tests were performed with intercontinental connections, and of course those will have significant latency. We found that when playing within 1000 miles of the server latency wa

Josh

Josh

Slider Widget

The slider widget is used for scrollbars, trackbars, and steppers. It has a lot of style options, so it's really six different widgets packed into one. (In Leadwerks Editor, a slider and textfield widget are combined to make the numerical entries you use to adjust positions and other values.)     To create a new slider you just create a widget and set the slider script: local slider = Widget:Create(230+40,140,20,20,panel) slider:SetScript("Scripts/GUI/Slider.lua")   You can then se

Josh

Josh

Uniform Buffers in Vulkan

Following this tutorial, I have managed to add uniform buffers into my Vulkan graphics pipeline. Since each image in the swapchain has a different graphics pipeline object, and uniform buffers are tied to a pipeline, you end up uploading all the data three times every time it changes. OpenGL might be doing something like this under the hood, but I am not sure this is a good approach. There are three ways to get data to a shader in Vulkan. Push constants are synonymous with GLSL uniforms, althoug

Josh

Josh

×
×
  • Create New...