• entries
    623
  • comments
    4,454
  • views
    673,800

About this blog

Learn about game development technology

Entries in this blog

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. :D  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 source code, adding Unicode support and using C++11 shared pointers for all objects that were previously created as pointers.  The changes to the source code were extensive, and though I used preprocessor definitions to separate the 4.x and 5 builds, there may be some errors in the engine at this time.

So the next few weeks is going to be a process of testing the engine and documenting the new features.  I plan to have a beta of 4.5 up shortly on Steam.  4.5 will be released before Christmas, along with the first beta of version 5, for people who bought the $5 subscription.  The enterprise version will be updated a couple weeks after the release of 4.5.

Josh

My endless quest for ever-cheaper labor has brought me to the capitol city of Ukraine, Kiev.  Programmers and artists here can be hired for about $20,000-$30,000 a year, and I believe minimum wage (yay for interns!) is about $0.75 an hour.

I've been to all the major city American cities, and spent time in several major European cities including London, Berlin, Stockholm, and Copenhagen, which I feel gives me a little perspective on what makes a metropolis tick.  So here are a few things you might not have ever heard about Ukraine.

Ukrainians are Huge Fans of Half-Life 2

This city is very clearly modeled after City 17 from the Half-Life series of games.  It's amazing that they were able to construct such detailed reproductions of City 17 in only ten years, since the game was released in 2006.  The attention to detail is truly remarkable, but I feel they kind of ripped off the entire aesthetic and should have done something of their own.

IMG_1621.JPG.d50ac76f45a682f5b76f07aa04f1cf8b.JPG

Total rip-off.

This may have been the actual building that inspired the Citadel.

It's been done!!!

d1_trainstation_020012_1100550779.jpg.114f511a49832a36967f50fd1288d262.jpg

Seriously though, it's very clear the Citadel was meant as a metaphor for the encroachment of modern technology (or capitalism) on an old culture steeped in tradition.

Don't Judge a Book by its Cover

After a 17 hour plane flight (actually, three planes), and a lost bag (more on this later), I finally made it into the city center to find my new accommodations, and was greeted by what looked like a nuclear bunker from the cold war.  When I saw the outside I seriously almost checked into a hotel because it looked so dirty and run-down.  I thought for sure there would be rats and people shooting up heroin inside.

IMG_1626.JPG.279565624c5e064cb392bc73583411d2.JPG

When I finally figured out the odd lock mechanism, the entrance was even worse.  This is a straight-up ripoff of S.T.A.L.K.E.R.:

IMG_1666.JPG.29a43eeef33997fd5e024b8a9316252b.JPG

Lame!

IMG_1665.JPG.6a8444f2b811e996c2ffffa370dbd672.JPG

But when I got into the apartment, everything was completely pristine:

IMG_1630.JPG.6fb547ad5e3689d23acd3f0600215ba7.JPG

Why Make a Crosswalk When You can Build an Underground Mini-Mall?

The major intersections in Kiev do not use crosswalks at all, or pedestrian bridges, or anything else to move from one side to another.  Instead, they build tunnels under the roads for people to walk through.  I imagine at one time under the Soviet Union these were probably utilitarian tunnels, but since the onset of capitolism every extra square foot of space has been dedicated to selling you stuff.  Which is cool, because I got some really nice things there at low, low prices!

IMG_1701.JPG.f8bad9b045cd5d041ce89d31c081d6f1.JPG

The entrance looks like a subway station.

IMG_1700.JPG.e2a582e2309a52a8f043558b4d922192.JPG

The inside is a combination of an American strip mall and a Chinese bazarre.

IMG_1620.JPG.39d95a01f82469ac98c64fc22eb32763.JPG

Things get scarier at night.

You Can Buy Animal Parts at the Grocery Store

Ukrainian supermarkets are very modern and sophisticated.

IMG_1705.JPG.81151384da1ca920a0a7bffa3eb60d04.JPG

But like everything else compared to the west, it's just a little more brutal.

IMG_1667.JPG.77e66459261837f06ef8cba1ac4bd805.JPG

Texas chainsaw massacre-level.

IMG_1669.JPG.5ceffa211f63cd200f99c4fc65bf6b6e.JPG

Bambi's mother looks delicious.

IMG_1704.JPG.f63de6cb7b0823454dfc3e275f59476d.JPG

Mutant turkeys and pseudobunnies, presumably from the zone.

The real question is, who has better quality food?  Although I am repulsed by the barbarity of the Ukrainian meat market, it involves less processing and thus fewer alterations and opportunities for introduction of bacteria.  Amazingly, I did not pick up any "rotten meat" stink at all, even though hundreds of pounds of dead animals were laying out in the open.

Josh

EuroTrip II

I am now in possession of the official Leadwerks USB drives.  Weighing in at 16 GB, they look fantastic.

19957008_10155303550526183_4315704447448976980_o.jpg.c50007531937828de42285fa53b28b89.jpg.e045420c8f5b96ae123ba0456840f2b1.jpg

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 will be accompanied by my handy-dandy Gigabyte Brix Pro provided to me by Intel at the first Steam Dev Days.  Thanks Intel!:

597285f4ab7dc_aHR0cDovL21lZGlhLmJlc3RvZm1pY3JvLmNvbS9FL0wvNDE3ODM3L29yaWdpbmFsL1N0ZWFtLU1hY2hpbmVzLUNFUy0yMDE0LTI0LmpwZw.jpg.81a586fb72d936200f675df87b73ce9e.jpg

I will be working on NAT punch-through, Leadwerks 5, and making bug fixes.  I will also be meeting with developers in countries with a much cheaper cost of living, for the purpose of potentially expanding the company's development capabilities so I can bring you more cool stuff.

Josh

A new build is available on the beta branch.  I am putting it out tonight because I want to give you guys as much lead time as possible.

I have not tested all hardware yet, and there were a lot of shader updates, so there could easily be a compile error on AMD or Intel cards.  Will test those out in the morning.

New camera commands for fog:

virtual void SetFogColor(const float r, const float g, const float b, const float a);
virtual void SetFogAngle(const float start, const float stop);
virtual void SetFogRange(const float start, const float stop);
virtual void SetFogMode(const bool mode);
virtual Vec4 GetFogColor();
virtual Vec2 GetFogAngle();
virtual Vec2 GetFogRange();
virtual bool GetFogMode();

This is scheduled to be released on the default branch this Tuesday.

Also useful:

 

Josh

A new build is up on the beta branch, for Windows and Linux, with Lua and C++ support.  This is a full update.

Version 4.4 will be announced June 26th, and this will go on the default branch some time next week.

I was not able to get the new vehicles working in time, and It will have to be added in an update.  Version 4.4 will have vehicles disabled.  If you need this functionality, stick with version 4.3.

A big thanks for all the people who are helping to test it.

Josh

Leadwerks Game Engine 4.4 has been updated on the beta branch on Steam.

  • Networking finished and documented.
  • GUI finished.
  • All new physics features finished.

The character controller physics and picking up objects has been improved and made smoother.  There is a problem with the player sliding down slopes, as seen in the FPS Character Controller example map.  I will work this out.

I also noticed during testing that picking up some objects in the FPS / AI map will freeze the game.  Will check it out.

I have not actually tested compiling on Linux yet, because my Linux machine is in the office and I am at home right now.  I'm heading in this afternoon, at which point I will complete Linux testing.

The only other problem is that vehicles are not working yet.  I'm not sure yet how I will proceed with this.

Updating C++ Projects

The following changes are needed to update your C++ projects:

Visual Studio

Add these include header search directories:

  • $(LeadwerksHeaderPath)\Libraries\NewtonDynamics\packages\thirdParty\timeTracker

Add these input libraries:

  • newton_d.lib;dContainers_d.lib;dCustomJoints_d.lib; (debug)
  • newton.lib;dContainers.lib;dCustomJoints.lib; (release)

Code::Blocks

Add these include header search directories:

  • $(LeadwerksPath)/Include/Libraries/NewtonDynamics/packages/thirdParty/timeTracker

You also need the dev files for libcurl:

sudo apt-get install libcurl4-openssl-dev

This is pretty much the finished 4.4, so please test it and post any bug reports you have.  Thank you.

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 using SSL on every page, again for SEO purposes.

There are a few bits that need improvement, but overall it's a solid upgrade and I think you will find the new site to be very helpful.  I've added a new Q & A forum where you can get technical assistance and rate the answers.  Code formatting has been improved a lot, and the notifications system does a really good job of catching replies to your posts.  (If you're receiving a lot of emails you can disable this in your account settings.)

Finally, you can now set a cover image to show at the top of your profile, which is pretty cool.

Josh

I've taken your suggestions and incorporated the fixes into the new documentation system here:

https://www.leadwerks.com/learn

 

All classes and commands are alphabetized, with classes listed first.

 

All pages in the API Reference should be working now.

 

If a page does not appear in the old docs, or if a command does not have an example, it will not appear in the new docs, as I am not changing the content right now.

 

Please let me know if the table of contents of pages have any errors.

Josh

I'm asking the community to look over the new documentation system and find any mistakes before I sign off on the project. The tutorials are not completed. The API Reference should be completed, although the main API Reference page is not showing anything right now.

https://www.leadwerks.com/learn

 

Here are my notes to the developer who is working on the docs:

Thank you for the update. I have fixed the table of contents page so that clicking on a link in the tree view will navifate to the correct page. This should make it much easier to test.

 

The following corrections are needed:

 

A new <subclasses> tag has been added, to show a list of all derived subclasses on a class page:

https://www.leadwerks.com/learn?page=API-Reference_Object_Entity

 

This is what it looks like for the Entity class page:

<subclasses>

<subclass>Camera</subclass>

<subclass>Bone</subclass>

<subclass>Model</subclass>

<subclass>Terrain</subclass>

<subclass>Brush</subclass>

<subclass>Light</subclass>

<subclass>Pivot</subclass>

</subclasses>

 

The App class can be removed from the TOC. Rewriting the example functions eliminates our use of this.

 

The Object class page is missing.

 

In the table of contents, all camera function links after GetClearColor() are wrong.

 

There is no Emitter::ClearPostEffects() function. Please remove this from the TOC.

 

I am asking my community to find any other problems. Overall, it's looking great.

 

Please review the material and make sure everything meets your satisfaction, and leave your comment below if needed. I figure many sets of eyes will be more efficient than just me looking through it. This is your documentation, and I want to make sure it's the best for you. Thanks for your help!

Josh

The table of contents and index can now be used to navigate to a page:

https://www.leadwerks.com/learn

 

Search is also working.

 

Almost all of the commands are filled in, with examples for Lua and C++, updated to use the standard main() entry point, or in the case of Lua, just a main script with no function.

 

Function arguments and syntax will also be displayed in C++ or Lua data types. So if you have the docs set to Lua, you will just see "number" instead of "const float blah blah blah..."

 

I am going to review the material and then I will ask the community to go through it before I give my freelancer the final OK.

 

blogentry-1-0-35735600-1493074797_thumb.jpg

Josh

The new docs system is mostly working now:

https://www.leadwerks.com/learn?page=API-Reference_Object_Entity_SetPosition

 

Features:

  • Treeview list of all tutorials and API classes and functions.
  • Alphabetical index (generated automatically from the table of contents).
  • Search (with autogenerated search index).
  • Switch back and forth between languages, with cookies to remember your preference.
  • Entire examples are automatically selected when you click on them.

Todo:

  • Table of contents doesn't yet navigate.
  • I would like to pretty-up the URLs using .htaccess rewrite rules.

 

Documentation is being loaded from XML files. I find this easier than a database, which is quite opaque to me. You can access some of the XML files being used here. MartyJ even made a cool template for the data on his site here.

 

At this point I think I can outsource the actual content creation to Upwork. This will involve copying and formatting our existing documentation into XML files, as well as updating all the examples to work by just using a main() function instead of the old App() class that we don't really need. I will be posting the job on that site soon.

Josh

I've been getting good results storing documentation data in XML files. This allows me to make changes to the way documenation is displayed, without updating hundreds or thousands of pages. I can also write documentation without as much HTML markup. For example, bullets can automatically be inserted in line breaks for the syntax info. Javascript-based search engines usually require all page contents to be store in an array, so this gives us an easy way to collect that data.

 

Since XML is a known standard, this makes it a bit easier to outsource the documentation content.

 

Here is a sample file I am working with.


<?xml version="1.0"?>

<page>

<title>SetPosition</title>

<description>Sets the position of an entity in 3-dimensional space, using local or global coordinates.</description>

<cppsyntax>

void Entity::SetPosition(const float x, const float y, const float z, const bool global = false)

void Entity::SetPosition(const Vec3& position, const bool global = false)

</cppsyntax>

<luasyntax>

nil Entity:SetPosition(number x number y, number z, bool global = false)

nil Entity:SetPosition(Vec3 position, bool global = false)

</luasyntax>

<parameters>

x: X component of the specified position.

y: Y component of the specified position.

z: Z component of the specified position.

position: the position to set.

global: indicates whether the position should be set in global or local space.

</parameters>

<remarks>

An entity can be positioned in local or global coordinates. Local coordinates are relative to the entity parent's space.

 

If the entity does not have a parent, local and global coordinates are the same.

 

<img src='img/552px-Space.png' />

 

Leadwerks uses a left-handed coordinate system. This means that if you hold your left hand as shown below, your middle finger, index finger, and thumb will point in the directions of the X, Y, and Z axes, respectively.

<img src='img/image2.jpg' />

</remarks>

<luaexample>

--Create a window

window = Window:Create()

context = Context:Create(window)

world = World:Create()

local camera = Camera:Create()

camera:SetRotation(35,0,0)

camera:Move(0,0,-6)

local light = DirectionalLight:Create()

light:SetRotation(35,35,0)

--Create a model

model = Model:Box()

while true do

if window:Closed() or window:KeyHit(Key.Escape) then return false end

model:SetPosition(Math:Sin(Time:GetCurrent()/10.0),0,0)

Time:Update()

world:Update()

world:Render()

context:Sync()

end

</luaexample>

<cppexample>

#include "Leadwerks.h"

using namespace Leadwerks;

int main(int argc, const char *argv[])

{

Leadwerks::Window* window = Window::Create();

Context* context = Context::Create(window);

World* world = World::Create();

Camera* camera = Camera::Create();

camera->SetRotation(35, 0, 0);

camera->Move(0, 0, -4);

Light* light = DirectionalLight::Create();

light->SetRotation(35, 35, 0);

//Create a model

Model* model = Model::Box();

while (true)

{

if (window->Closed() || window->KeyDown(Key::Escape)) return false;

model->SetPosition(Math::Sin(Time::GetCurrent() / 10.0), 0, 0);

Leadwerks::Time::Update();

world->Update();

world->Render();

context->SetBlendMode(Blend::Alpha);

context->DrawText(model->GetPosition().ToString(), 2, 2);

context->Sync();

}

return 0;

}

</cppexample>

</page>

 

Even the table of contents can be store in XML, which provides a listing of all pages and a way to automatically create the search index and a list of all topics:

<?xml version="1.0"?>

<contents>

<topics>

<topic>

<title>Tutorials</title>

<openstate>true</openstate>

<topics>

<topic>

<title>1. Editor</title>

<openstate>true</openstate>

<topics>

<topic><title>1.1 Editor Interface</title><openstate>true</openstate></topic>

<topic><title>1.2 Scene Panel</title></topic>

<topic><title>1.3 Textures</title></topic>

<topic><title>1.4 Materials</title></topic>

<topic><title>1.5 Models</title></topic>

<topic><title>1.6 Terrain</title></topic>

</topics>

</topic>

<topic>

<title>2. Games</title>

<topics>

<topic><title>2.1 Marble Platformer</title></topic>

</topics>

</topic>

<topic>

<title>3. Lua Programming</title>

<topics>

<topic><title>3.1 Introduction to Lua</title></topic>

</topics>

</topic>

<topic>

<title>4. C++ Programming</title>

<topics>

<topic><title>4.1 Introduction to C++</title></topic>

</topics>

</topic>

</topics>

</topic>

<topic>

<title>Script Reference</title>

<topics>

<topic><title>AI</title></topic>

<topic><title>Analytics</title></topic>

</topics>

</topic>

<topic>

<title>API Reference</title>

<topics>

<topic>

<title>Object</title>

<openstate>true</openstate>

<topics>

<topic><title>Asset</title></topic>

<topic><title>Analytics</title></topic>

</topics>

</topic>

</topics>

</topic>

</topics>

</contents>

Josh

I'm not entirely happy with the output of HelpNDoc for a few reasons. It outputs a great variety of formats, but doesn't do a spectacular job of any. I hoped to use CHM for local help but these do not scale well on high-resolution displays, and the technology will not be updated by Microsoft. HelpNDoc's HTML output is okay but not great, so I started experimenting with my own HTML to get exactly the look and functionality I want.

 

RIght now I have a javascript-based treeview for navigation, breadcrumb links, syntax highlighting for Lua and C++, responsive design, the ability to switch between C++ and Lua documentation on the same page, and the code examples select the entire block when you click on them. There's still more work to do, but so far this is the most promising method that is giving the best results. I am not sure yet if this will be a lot of PHP files or a utility program that spits out a bunch of HTML files.

 

blogentry-1-0-82981500-1489471156_thumb.jpg

 

blogentry-1-0-57106600-1489471168_thumb.jpg

 

I'm going to focus on the format of the data and then I'll post a job on Upwork and find someone else to do the grunt work of filling in all the content.

Josh

Our website has been updated with a new look and responsive design. Here are a few highlights.

 

Landing page:

blogentry-1-0-33605400-1489032564_thumb.jpg

 

Product pages:

blogentry-1-0-30517000-1489032631_thumb.jpg

 

Screenshots used in the site from games will display the title and author when you hover the mouse over them.

 

Responsive layout scaled for phones:

blogentry-1-0-17785100-1489032656_thumb.jpg

 

Clearer writing that says exactly what Leadwerks does and who it is for:

blogentry-1-0-95312500-1489032672_thumb.jpg

 

Dark gallery and video pages:

blogentry-1-0-59513400-1489032715_thumb.jpg

 

Sleek screenshot pages:

blogentry-1-0-34674700-1489032735_thumb.jpg

 

I left the Workshop pages as-is for now. The forum software is going to be updated and a new skin will be designed for the new version of the community software.

Josh

I have a few preview images to show you my progress with the implementation of my design for the website refresh. Enjoy.

 

blogentry-1-0-89993100-1488425458_thumb.jpg

 

blogentry-1-0-91921200-1488425469_thumb.jpg

 

blogentry-1-0-08950400-1488426213_thumb.jpg

 

Here's a new version of the view image page. It's pretty bold. The image stretches to its max dimensions, and a dark background is shown beyond that.

 

blogentry-1-0-06611400-1488476815_thumb.jpg

 

Working with a dark background for the video and gallery pages, and it feels pretty natural. Information pages with lots of text use the light theme, while image-heavy artsy sections use a dark theme so you can focus on the content.

 

blogentry-1-0-39138300-1488489539_thumb.jpg

 

This is close to finished:

 

blogentry-1-0-69328900-1488518773_thumb.jpg

Josh

Website Concepts

Here are some concepts I came up with for the site redesign.

 

blogentry-1-0-28096400-1488243640_thumb.jpg

 

blogentry-1-0-75543500-1488236499_thumb.jpg

 

blogentry-1-0-17914300-1488236510_thumb.jpg

 

The bold no-bull**** interface of itch.io inspired this design:

 

blogentry-1-0-48946400-1488241588_thumb.jpg

 

I think what will work best is if the designer takes my rough sketches, turns it into a clean design, and implements it with clean code.

 

I don't think we can change the whole site over at once without me losing control of the creative process and having runaway costs. I want to focus on the pages I have shown here and establish a foundation I can experiment with and iterate on.

Josh

Website Design

With the upcoming uncertainty that Steam Direct introduces to Steam sellers, I am putting more effort into our website, because it may be the primary channel through which new users discover Leadwerks in the future. Although the functionality of our site is awesome, the visual design is rather outdated and it's time for an actual designer to take over. I've got a rough idea of what I want the site to look like, but beyond that I am happy to let someone else figure it out.

 

blogentry-1-0-26079000-1488136311_thumb.jpg

blogentry-1-0-01585300-1488136321_thumb.jpg

blogentry-1-0-61174400-1488136333_thumb.jpg

 

I plan on the design using lots of big images, and we have a large collection of high-res renders made with Leadwerks that will look great.

Josh

Website Updates

I've successfully pulled every website page out of the Invision Power Board CMS that I can:

http://www.leadwerks.com

http://www.leadwerks.com/graphics

http://www.leadwerks.com/editor

http://www.leadwerks.com/programming

http://www.leadwerks.com/features

http://www.leadwerks.com/steamos

http://www.leadwerks.com/gamelauncher

http://www.leadwerks.com/workshop

http://www.leadwerks.com/gallery

http://www.leadwerks.com/videos

http://www.leadwerks.com/games

http://www.leadwerks.com/company

http://www.leadwerks.com/contact

http://www.leadwerks.com/termsofuse

http://www.leadwerks.com/privacy

http://www.leadwerks.com/cookies

 

These pages load independently from any of the community software files, so the website and community can be updated separately.

 

I've taken the web design as far as I can, which is better than most designers would do, but not as good as I want. The website really needs to sell the software. Now I am looking for a high-quality redesign, which I expect to cost a fair amount of money. I'm primarily looking at design firms in the SF bay area who have experience making AAA game websites.

 

The community software will be updated to the latest version, which breaks our skin and other customizations. A new skin will be designed that will be similar but not identical to our current look.

 

At one time, I tried to use IPB for everything, including commerce, a gallery, and downloads, but I don't think a CMS can be very good at all things. We're only using IPB at this point for the forum, blogs, and a few custom databases and pages. Steam is working well for screenshots, videos, and downloads (Workshop), and I use custom PHP scripts to retrieve and display that information.

 

The beta branch of the editor has the Workshop home page set to the new location and everything should work without a hitch.

 

The documentation is also being separated out into a different system that is better suited for that purpose, but that will take more time.

Josh

The upcoming changes to the Steam curation process may mean we experience greatly reduced visibility in the Steam store, and I am preparing for that possibility. The plan for quite a while has been to double down on the ease of use and learning that differentiates Leadwerks from every other game development system on the market.

To that end, I have begun translating the documentation into a format that is easier to view and search. The welcome page has been done away with and will be replaced by a start page similar to Visual Studio that displays recent news, allows project selection and creation, and encourages the user to become active in the community. By default, the documentation will probably open automatically in a CHM file the first time the program starts.

We're relying much less on IPB (our community software) nowadays, and most of the website is being pulled out of that system. The gallery page, for example, now runs with no connection to the forum installation. Eventually we will upgrade the community software to the latest major version, and this move will minimize any disruption to the website.

Meanwhile, the game templates are in the planning stage. The marble platformer template is actually generating a lot of cool ideas and it could be easily repurposed to make an engaging third-person platformer game. I think this will be a fantastic introduction to game development and inspire a lot of creative variations.

The social media accounts are now adjusted to be more selective with the content they repost.

The goal is to make new users the best possible experience learning to make games. It's not enough just to have certain features, I want new users to be religiously enthusiastic when they see what they can do with Leadwerks.

Josh

A full update for Windows and Linux is now available on the beta branch which addresses several small problems:

http://www.leadwerks.com/werkspace/topic/15772-standalone-build-wont-launch/

http://www.leadwerks.com/werkspace/topic/15761-entity-gets-has-stopped-working-error/

http://www.leadwerks.com/werkspace/topic/15766-crash-anything-since-last-update-object-already-deleted/

 

The version of the VC redistributable has also been updated in Steam and will fix this problem if you are having trouble running your game from the editor in debug mode:

http://www.leadwerks.com/werkspace/topic/15734-problem-starting-43-in-debug-mode/

Josh

Previously, I laid out a pretty complete design of the racing game template I want to build. There's definitely enough there to build out the concept with very little left unanswered.

 

We are going to have a marble game template, because of its simplicity and ease of learning. However, unless the template really looks like a game people would want to play, it doesn't offer enough "carrot" to inspire people. This idea is less well-defined than the racing game, so I am only in the idea stage right now. There's two big aspects of this I want to figure out: level design and game mechanics.

Level Design

If you look at a lot of this type of game on Steam, they pretty much all just use some random blocks or generic levels and place a ball in it. This is what I do not want:

 

blogentry-1-0-27844500-1487091948_thumb.jpg

 

A game of this type should have a highly ordered repeating geometry.

 

blogentry-1-0-36719800-1487092121.png

 

blogentry-1-0-38268300-1487092283_thumb.jpg

 

These examples are more orthogonal than I would like, but it's a start. I definitely want the base of it to be a checkered pattern. I do not want random blocks. See how the Sonic level design uses some trim along the edges to make it look nicer?

 

Here's an example of some more organic elements mixed into the design:

 

blogentry-1-0-46098300-1487092568.jpg

 

Here's a nice curve. Not exactly what I want, but it provides some ideas:

 

blogentry-1-0-77891800-1487092734_thumb.jpg

 

I like the curving plastic pieces here:

 

blogentry-1-0-06314100-1487092904.jpg

 

It should look like a toy kit you put together. The wooden elements are also pretty cool.

 

So here's my quick summary of what I want in the level design:

  • Mostly orthogonal and diagonal brushes with a checkboard pattern.
  • Lush vegetation to break up edges and make the world less boxy.
  • Curved pre-formed pieces that look like plastic and wooden toys.

 

Overall I want the world to feel like an old Nintendo fantasy world with an adventurous feel. The music might not be 8-bit, but should have some of that style:

http://www.playonloop.com/2017-music-loops/doctor-gadget/

 

The marble itself should have a distinctive look. Maybe a reflective silver ball-bearing, using the SSG effect to reflect the world around it?

Here are some concept textures.

grid.thumb.png.659be8bf23583455c886656930c3f9e1.png+

side.thumb.png.f71b6e20566bb5dcf6863808b6c03043.png

cornerB.png.f4eb103b9d58a121910f262ddb37b1fd.png

cornerA.png.411d950e3cf0c5a8d121e1f910b57c73.png

edge.thumb.png.db7f321a9eaea26d6e030191f72190d8.png

Mechanics

I am pretty foggy on this because I don't play this type of game. Fans? Moving platforms? Loop-de-loops? Got any suggestions or examples from other games you would like to see me implement? If you have a video of gameplay, that's even better.

The idea is to implement a few reusable mechanics that can be recombined in interesting ways, so that someone can make a finished game just by recombining them and making additional levels. I also favor mechanics that are associated with a specific model so that they are easily recognizable, like fans, magnets, saws, etc.

Tell me your ideas in the comments below.

Josh

The path we are on

blog-0137282001486914853.jpg

Previously, I have talked about my plans for Leadwerks and how to get there. In that blog I started with technical specs and went backwards with the path we would follow to achieve those goals. Now I have begun to put some of these ideas into practice and I want to review my plan with you.

 

I met with a very large academic institution a few months ago and talked about using Leadwerks to teach game programming. This is the whole reason I wrote this blog and did the research included therein. When I put the graph up showing job requirements, it was a very easy sale.

 

blogentry-1-0-83594900-1486875125_thumb.png

 

I then gave a short talk to a group of their students who had some web development background, but had zero game development experience. Perfect! These people are my bread and butter. The purpose of this was to gauge interest in a class in game development, and they were very interested.

 

As I was talking to these people I realized I could not meet their expectations. No one else could either, but I knew at the end of a two week course they would only have very rudimentary ugly games made, not the dreams they had in their head. These people did not know anything about mipmaps, debuggers, texture coordinates, and they did not care. They just wanted to make games.

 

I cancelled my plans to hold a class because I knew we weren't ready to give them what they really needed. Leadwerks is the easiest way to build your own 3D games, but we are not all the way there yet. No one out there is really giving complete beginners the means to learn to make their games quickly, but we can be the first to do it with a bit more work.

 

As I stated previously, the documentation is being revised, including an offline copy of the docs. This takes an enormous amount of time because I have to copy, paste, and edit hundreds of pages. I am also revising all the code examples to only use the main .lua and .cpp files and get rid of the App::Start() stuff, which is a holdover from mobile.

 

The next step is to create a broader selection of high quality game templates. This is the final step that is needed to bridge the gap between game development technology and a complete beginner. The templates have to be polished and feel like a game you would actually want to play. This must happen or everything I have done has been a waste of time.

 

We are in a race against time to connect with a large audience in a way where they can't imagine life without Leadwerks. If I fail to do that, we will go the way of every other abandoned open-source game engine out there.

 

So that is what I am working on.

Josh

An update to 4.3 is available on the beta branch. This fixes it so the editor is not DPI-aware and will be scaled correctly if scaling on Windows is used. This build is also built with a fresh install of Windows 10 and Ubuntu (but it shouldn't make any difference).

 

This is a full build for Windows and Linux, with C++ libraries included. Game Launcher is also updated on its beta branch.

 

If there are no problems with this, it will go onto the default branch in a couple days.

Josh

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

An update is available on the beta branch for Windows, editor and Lua executables only. This fixes a problem in the new light update system:

http://www.leadwerks.com/werkspace/topic/15713-shadow-update-editor-issues/

http://www.leadwerks.com/werkspace/topic/15716-43-child-entities-do-not-cast-shadows/

 

The animation shaders are also modified and they will appear better:

http://www.leadwerks.com/werkspace/topic/15710-all-animated-shaders-have-wrongstatic-normals/