Jump to content
  • entries
    941
  • comments
    5,894
  • views
    871,795

About this blog

Learn about game development technology

Entries in this blog

Preparing for the release of version 4.4

I am going to try something different this time and use the Thunderclap tool to promote the release of Leadwerks 4.4, which I have scheduled for April 3: https://www.thunderclap.it/projects/52943-leadwerks-game-engine-4-4   Please sign up to help with the launch if you would like to promote it.   Also, there is still time to help the launch of A Demon's Game: https://www.thunderclap.it/projects/52763-a-demon-s-game-crowdfunding

Josh

Josh

Entity Script System

We've had a lot of discussion with the community about the Leadwerks3D script system. The current design is based on a combination of user feedback, lessons learned from Leadwerks Engine 2, stealing ideas from other game engines, and my own judgement. Our goal is to make a really easy and powerful game scripting system, without overwhelming the user with complexity. With that said, I thought I would let you in on how the script system presently is working in our own builds, and the process of

Josh

Josh

Bonus update is now available!

Wow, two updates in two days! This one adds new features and bug fixes.   Fixes http://www.leadwerks.com/werkspace/topic/10019-directional-lights-dont-cast-shadows/ http://www.leadwerks.com/werkspace/topic/10030-values-in-appearance-tab-ignored/ http://www.leadwerks.com/werkspace/topic/10020-values-in-entities-general-tab-stuck/ http://www.leadwerks.com/werkspace/topic/8138-pointlight-viewrange-bug http://www.leadwerks.com/werkspace/topic/9919-wobbly-fbx-imports/   New Features Globa

Josh

Josh

Shader Families

I started to implement quads for tessellation, and at that point the shader system reached the point of being unmanageable. Rendering an object to a shadow map and to a color buffer are two different processes that require two different shaders. Turbo introduces an early Z-pass which can use another shader, and if variance shadow maps are not in use this can be a different shader from the shadow shader. Rendering with tessellation requires another set of shaders, with one different set for each

Josh

Josh

Forum Update

The forum software has been updated to a major new version.  This completes my effort to give the entire website responsive design, and ensures we continue to receive security updates.  The responsive design part is really for SEO, but it is kind of cool to be able to browse the entire site on your phone without zooming in. Documentation has been switched over to the new system here, which is independent from the forum software: https://www.leadwerks.com/learn The entire site is now us

Josh

Josh

Building Turret AI: Part 2

I've expanded the turret AI to include a visibility test. This is performed initially when selecting a target, and is also performed on a continuous basis to make sure the target stays in view. To avoid overloading the engine I am only performing the visibility test at most once every 500 milliseconds. This provides near-instantaneous updating while preventing the picking from becoming a bottleneck and slowing down performance.   Adding bullets was mostly a copy and paste job from the Soldi

Josh

Josh

Creating a VR Teleporter

I'm building the VR project template for Leadwerks 4.5.  Although you can enable VR in any project, this template is specifically designed to provide some of your most common room-scale VR features: Teleportation movement, which prevents motion sickness. Picking up and throwing objects. (It's actually really fun!) To start with I am creating the art assets for the teleport effect. This is basically what I want: Your controller shoots a beam which ends in an indicato

Josh

Josh

Sample Sliding Door Script in Turbo / Leadwerks 5

I've successfully converter the sliding door script over to the new API. This will all look very familiar, but there are some cool points to note. The entity mass can be retrieved and set with a property as if it was just a regular variable. Underneath the hood, the engine is making method calls. I decided to prefix most field names with "slidingdoor_" to prevent other scripts from accidentally interfering. The "enabled" value, however, is meant to be shared. The Entity is

Josh

Josh

Vegetation Interaction

This video shows the player interacting with vegetation objects. Vegetation objects are special because they aren't stored in memory at all, but instead are dynamically generated in real-time according to a special algorithm! You can have infinitely dense forests without using any memory.  

Josh

Josh

A tale of optimization

I'm really shocked by how fast C++ can be. iOS and Android do not support GPU skinning, so I had to implement vertex-weighted skinning on the CPU. It took about a day to get running, and then I started optimizing code.   My test case was an 8400 polygon model. Each vertex could be attached to as many as four bones, but most just used two or three bones. To make it more interesting, I put the vertex weighting code inside a loop so it would be performed ten times instead of once.   When I

Josh

Josh

Almost Android

Leadwerks 3 is compiling for Android. There's presently a problem with the file system that is preventing any 3D rendering, but we'll get that worked out shortly. We're targeting Android 2.2.   In order to compile C++ for Android on Windows, we had to install the following: -Java SDK -Eclipse IDE -Android SDK -Android NDK -CygWin -GDB   We also learned that OpenGL ES 2.0 does not run in the Android simulator. For the time being, we have to run the engine on an actual Android device.

Josh

Josh

Icon Design

I've recruited a professional designer to create a new icon set for the Leadwerks UI. This will provide us with a more consistent visual interface, with a similar look on all supported platforms.   My first instructions were to go bright and multi-colored, with colors similar to Lego pieces. We also included Windows 10 style icons as an influence. These looked good, but when plugged into the program the interface lost its visual consistency.     We next experimented with some grayscale

Josh

Josh

Artificial Stupidity

I'm testing the Leadwerks3D AI navigation and getting some interesting results. I'm not sure why it's acting this way, but we'll get it figured out soon. It seems like the navigation gets "stuck" on corners, fails to enter some tiles, and likes to take the scenic route to some destinations. B)  

Josh

Josh

Leadwerks 4.3 RC3

A full build is available for Windows and Linux on the beta branch on Steam. This fixes a problem with the character controller physics and with the Alt key on Windows.   To upgrade 4.2 C++ projects to 4.3, you must add the following search paths: $(LeadwerksHeaderPath)\Libraries\libvorbis\include $(LeadwerksHeaderPath)\Libraries\libogg\include   I'm pretty sure it's ready, but please give it a good thrashing. This will go up on the default branch tomorrow morning.

Josh

Josh

Progress

Here's my list of things left to do: Documentation Undo system Get character models for Darkness Awaits Prepare the super secret special surprise for deployment   Undo functionality is my absolute least favorite thing to program, and I also want to get some more real-world testing done before implementing it, so it comes last. This evening I will start on the docs, in earnest.   I hope everyone is having a good near-Christmas week.

Josh

Josh

Let's get this vegetation party started

An update is now available on the beta branch which fixes the alt+tab problem. This works by skipping rendering when a window is minimized, since the Win32 command GetClientRect() returns a size of zero when windows are minimized.   Now I am on to the highly anticipated Leadwerks 3 vegetation system. I previously wrote about some research I was performing here: http://www.leadwerks.com/werkspace/blog/1/entry-1499-vegetation-research/ http://www.leadwerks.com/werkspace/blog/1/entry-1500-veg

Josh

Josh

Lua and C++ Debugger

The C++ object debugger for Lua is working now. It was a little tricky, but I implemented a method to view all members of C++ objects. The debugger does handle dynamic object fetching, so if you expand a node in the debug tree representing a C++ object, the contents of that object will be loaded and displayed. Let's say you have an entity parented to another entity. This allows you to expand the parent member of the child, then find the child in the parent's child list, and so on, ad infinit

Josh

Josh

Advanced Lua Debugging

I've had some more time to work with the Lua debugger in Leadwerks Game Engine 5 beta, and it's really amazing.  Adding the engine classes into the debug information has been pretty simple. All it takes is a class function that adds members into a table and returns it to Lua. sol::table Texture::debug(sol::this_state ts) const { auto t = Object::debug(ts); t["size"] = size; t["format"] = format; t["type"] = type; t["flags"] = flags; t["samples"] = samples; t["faces"] = faces;

Josh

Josh

Leadwerks Game Launcher on Linux

If you opt into the beta branch of Leadwerks Game Launcher on Steam, you can now try the application out on Linux, using the new LeadwerksGUI user interface.   LeadwerksGUI is a cross-platform GUI library that features DPI scaling for any resolution, supporting 4K and retina screens.    

Josh

Josh

Snow Day

The last day of the season was today, so I was at North Star. We had a storm for the last three days, so the snow was pretty good, just sticky in some places. Even though it was a Sunday, crowds were not bad. Towards the end of the day, most people were hanging out at the lodge and the runs were completely empty. All in all, it was a pretty awesome day.

Josh

Josh

lgui screenshot

I got selection and rendering order working correctly, which is really the problem I wanted to solve with this. Here's a screenshot of the work in progress:  

Josh

Josh

A Red-Letter Day

No matter what, tomorrow is a big day for the tech industry. What do you think will happen? http://windows.microsoft.com/en-US/windows-8  

Josh

Josh

Building a Collaborative Content Production Pipeline - Part One

As the maker of a game engine primarily aimed at Indie game developers, I have the opportunity to observe behavior of many individuals working together. This allows me to observe interactions from a perspective the individual participants in the system sometimes can't see.   There are many steps in game development, that can be performed by people with different skill sets. The workflow for Leadwerks is designed on this premise. At its simplest, Leadwerks can be used as a visual design tool

Josh

Josh

From concept to final product

I'm working on project creation, management, and publishing right now. This is necessary because it automates some steps that would otherwise be very time-consuming.   When you create a project, you can choose the language and the platforms you want it to run on:   You can switch between projects to reload all assets and change the working directory:   You can export a project into a zip file, give it to someone else, and they can easily import it back from the zip, and have it availa

Josh

Josh

A second look at entity scripts

With Luabind, it turns out we don't even need a table associated with an entity. We can just add values and functions straight to Lua's representation of that entity in the virtual machine! So instead of this: object.health=100 object.entity:SetPosition(1,2,3) You can just do this, which is much nicer!: entity.health=100 entity:SetPosition(1,2,3) So there's no object/actor nonsense, you just work directly with the entity itself.   Entity Keys The Get/SetKey convention from Lea

Josh

Josh

×
×
  • Create New...