Leadwerks Game Engine 5 moves Leadwerks forward into the future with massive performance increases and more advanced features, it also makes game development easier than ever before with three great new programming features.
Shared Pointers
I could write a whole article about the benefits of shared pointers. Shared pointers are basically a simple form of garbage collection that relieves you from the need to manually delete objects, but doesn't suffer from the slow speed of full garbag
Here I want to present what the "Tower game" is doing becoming !
I got the idea to make a relaxing puzzle 3D game where the player will have to find/build/assemble different elements to discover arts.
Here a picture I found that inspired me this:
Now, I made a little demo video for this, I found the experience somewhat meditative, looking at this floating colorfull infinite world and listening to the sounds. You can turn the music off and listen at your own or just let it pl
Restarted my networking framework yet again. This time I gave it a new name 'Hexe'. The old name was 'Overwatch'. It was named long before the Overwatch game came out. It was based off the Half-Life Overwatch. It oversaw the players, ai spawning, contained a secondary path-finding system, but had no networking as it was not native to the LUA side of Leadwerks. 'Hexe' is German for 'witch'. I don't really know why I chose the name but I have the feeling I will be able to put it to good use. Maybe
Today I am excited to announce plans for the release of the first Leadwerks 5 beta version. Leadwerks 5 will roll out sooner rather than later, employing an extended beta period during which versions 4 and 5 will live side-by-side, using the same code base, with preprocessor definitions to compile each version. This allows me to fix small problems without forking the code, while I can implement new changes in version 5. The first features implemented will be the use of smart pointers for all
I work really hard on my new projekt. With the next Event from Josh i would show the first Alpha.
Meanwhile, I can also program more in LUA. I am really happy because i modified Hancinators "MeleeScript" with patrols. I put in a search function so the NPC continue his Path if he lost sight to you. Also i programmed a "Effect Script" so the NPC make "something" if the Effect is "true"
Also i try to voiceacting but this is in test at the moment (Jorn is busy at the moment )
Here
Leadwerks Game Engine 5 is being designed to make use of shared pointers. This eliminates manual reference counting, which has probably been the most difficult part of programming games with Leadwerks. Here are three concepts you must understand before you start using smart pointers in Leadwerks 5,
Don't Create Multiple Shared Pointers from One Object
When a shared pointer goes out of scope, it deletes the object it references. If another smart pointer was created separately that re
This shows the fundamental difference between shared pointers and manual reference counting.
Leadwerks 4:
void Material::SetTexture(Texture* texture, const int index)
{
if (this->texture[index] != texture)
{
if (this->texture[index]) this->texture[index]->Release();
this->texture[index] = texture;
if (this->texture[index]) this->texture[index]->AddRef();
}
}
Leadwerks 5:
void Material::SetTexture(shared_ptr<Texture> texture, const int index)
Previously, I talked a little bit about shared pointers in C++11. These use automatic reference counting to track how many variables are pointing to an object. When the object is no longer being used, it is automatically deleted. This is similar to garbage collection, but doesn't involve the massive overhead of garbage-collected systems. In fact, shared pointers simply automate something we were already doing with the Release() and AddRef() commands in Leadwerks 4.
A weak pointer is lik
Finished and added Field functionality meaning its now possible to set the Fields for each widget.
for example the style for a button (Push,Link,Checkbox), or backgroundcolor for panels etc.
below is a screenshot of the fields in action
Next will be finishing support for custom widgets which i already started on as you can see in the screenshot above(colorlabel).
At the moment the way to add your custom widgets is a 3 step process.
First step is adding the widget nam
finished basic exporting to lua or c++ code.
the screenshot below results in the following files based on ExportType.
Menu.lua
--GUI Editor Generated
function BuildMenu(context)
local Menu = {}
local scale = 1
--GUI
local gui = GUI:Create(context)
gui : SetScale(scale)
Menu.gui=gui
Menu.context=context
--Panel
Menu.Panel = Widget:Create("", 0, 0, 1024, 80, gui:GetBase(), "Scripts/GUI/Panel.lua")
Menu.Panel:SetAlignment(tr
This is a simplified change of this workshop item (so credits go there!)
https://www.leadwerks.com/workshopitem?tags=Material&queryType=1&fileType=0&fileid=699303085
A few changes I did:
1) the water.mat:
changed Diffuse color (64,64,64,64) + refraction shader
2) The script, simplified, like this:
Add this script to a box, cylinder, what you want...With the water material up there added.
And here the result
sorry Foots
Luawerks has been updated this morning, making the console more responsive and a new tab for the Options Menu for user's to bind keys to actions.
Actions have always been part of Luawerks, but until now, there wasn't really a motive to use them. Now, the Action class look in the config to check what key the user binded to that action. You can read more on how this works here. Like the console, this may be improved more in the future.
About Luawerks
Luawerks is a Lua framew
In a previous developer blog I showed how I use spline paths inside the Leadwerks editor. The cool thing about splines as that they are extremely multipurpose. I started working on generating meshes based on the splines. Think about ropes, wires, rivers, rollercoasters and of course roads
Ropes and wires are in progress because I find them the coolest. Especially rope bridges are awesome to make and see in play. They require a lot of finetuning so I have put that on halt for now. In the me
I am now in possession of the official Leadwerks USB drives. Weighing in at 16 GB, they look fantastic.
These will be shipped out shortly, along with the posters from the last game tournament. I've been working behind the scenes on some big things that took my attention, but I am not yet ready to reveal any of this. Because of the timing on this, we are going to do a Leadwerks Fall Games Festival starting in September.
I am going to spend the rest of the summer in Europe, where
I have proven beyond a shadow of a doubt that I am very bad at shipping posters. The Winter Game Tournament was completed in January and I have yet to deliver your prizes. If you have a job opening for someone to ship prizes, or to ship anything at all, I am probably the worst candidate you could ever hope to find to fill said position. Seriously.
Part of the problem (although it's still not an excuse) has been that it is actually incredibly difficult to have custom USB keychains made.
Paid scripts
I am looking in to publishing paid scripts to the workshop. There are 2 script collections that others might find interesting:
Advanced Third Person Controller
Many tweakable options: from double jumping, to camera offset, camera snapping, smoothing, speed controls etc
Spline paths
Not just useful for camera paths, but also for instance factory belts, vehicular movement (static cars, trains etc), airial paths (birds, planes), VR on rails.
Leadwerks 4.x will see a few more releases, each remaining backwards compatible with previous versions. Leadwerks 5.0 is the point where we will introduce changes that break compatibility with previous versions. The changes will support a faster design that relies more on multi-threading, updates to take advantage of C++11 features, and better support for non-English speaking users worldwide. Changes are limited to code; all asset files including models, maps, shaders, textures, and materials
C++11 introduces shared pointers, a powerful language feature that provides easy memory management without the overhead of garbage collection. The example below should look familiar to you:
#include "Leadwerks.h"
using namespace Leadwerks;
int main(int argc, const char *argv[])
{
shared_ptr<Leadwerks::Window> window = Leadwerks::Window::Create();
shared_ptr<Context> context = Context::Create(window);
shared_ptr<World> world = World::Create();
shared_ptr<Camera&