Jump to content

Leadwerks 5 Beta Rollout

Josh

5,397 views

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 shared objects, and unicode support for all strings.

A subscription model will be available for access to the Leadwerks 5 beta, at a modest price of just $4.99/month for enthusiasts who want access to the most cutting-edge game development technology as it is developed.  This will be available through the Leadwerks.com site, and will not use Steam (at least at first).  I feel it is important for the company's future to start building a recurring revenue stream, and I want to create something that does not rely on any middleman who may arbitrarily change or discontinue the terms of the service they are providing.  The Leadwerks 5 beta will implement breaking changes as it is developed, and is not meant for use in a production environment, so I do not recommend moving any commercial projects from version 4 to 5.  Leadwerks 4.x will continue to receive updates and new features until the final version 5 is released.

Leadwerks 5 is designed to be the most advanced game engine in the world, combining improved ease of use with massive performance, and a special emphasis on VR.  Thank you for supporting the next generation of game development technology.



56 Comments


Recommended Comments



11 minutes ago, jen said:

It doesn't have a CSG editor as with all the other editors mentioned. Good luck on the level design.

Sure.. looking at it now, but the curiosity had me. ;)

 @jen yeah, it is certainly an interesting game engine. I have even gone through the trouble to compile UE4 (4.17.1), but my preference is still Leadwerks.

Sometimes it is interesting to see what others are using and what the pros/cons are to these options. When it comes to such issues as license, then I am always interested. ;) 

Share this comment


Link to comment

Nothing is free, if a product does not receive assets, late or temprando disappears, no one works for love of the air.

One thing is to be an excellent programmer, artist, designer, and another is to be an entrepreneur with the ability to market the most horrible product in the world, looking for people who like it.

What I see is that at present there are many tools that are sold to people with the aim that they can create a video game and possibly sell it. But I think to do this it has to have a business base to know what is done.

Undoubtedly Leadwerks 5 will be an excellent engine, everything improves and evolves and as everything in life to some will like and not another, and this not untrue that it remains an alternative in the development market.

It's just what I think.

Share this comment


Link to comment

Well I read everything here and for sure I'm not a professional game maker that means I have pleasure to study and try to build a funny game - And this is sometimes dificult enough. So I consider Leadwerks offering a very good possibility to get a nice quality ingame, with fine mechanics game for a very good price AND it is learnable !

I remember you can try for free CryEngine, whatever I never succeed to export anything how difficult this is. That's was the reason I abandonned my try with such profi-engine...

Even if I think engine like CryEngine or UE4 are offering better mechanics for professional open world games creation (painting on assets, weather generator, road creator etc...)

Well I don't know what will be LE5, but for sure one-pay-time and "do what you want with it" is actually a very very attractive point to work with Leadwerks.

Share this comment


Link to comment
On 8/24/2017 at 2:24 PM, Josh said:

Of course, but once you see it you will never want to use anything else.  Leadwerks 5 is going to be the best game development tool ever created.

Day trip to Amsterdam?  Coffee and....cake? :wacko:    Only kidding.  Your enthusiasm is very exciting to see. Must be SUPER, SUPER hard to keep going at times, judging from what I've heard from other individuals.

Rick is right about the dipping in and out of subscription risk, though the level is such that most people would probably leave in place and it sounds like ultimately some adjustments to the model may be made. 

Usually I refuse to purchase software with a monthly models as what you are getting over time is often unclear.  I currently have NO software that requires a monthly subscription or any sort of renewal. The steady improvements to Leadwerks over 3 and 4 were nice though and it does seem time to put some more money in to expect things to continue to move forwards. 

The model where you pay monthly and eventually buy the software is quite appealing.

I'm not keen on license locks to machines. Steam us bearable as it's a single unified system.

....Just a few random thoughts.

 

Share this comment


Link to comment
On 24/08/2017 at 5:03 PM, Yue said:

Nothing is free, if a product does not receive assets, late or temprando disappears, no one works for love of the air.

...

Free is good cause it can make game for commercial as ogre 3D and it looks professional ! But I don't know why ogre doesn't work correctly so I try irrlicht and it works nice.

Other thing, Godot is nice but Eevee (Similar to UE4) from Blender is A KILLER to next generation for games LOL !

Don't get me wrong I love LE but Free is very good too because there a lot contributor to keep to update for nice open source software and for all never DIE you know.

Share this comment


Link to comment

I have had at least 2 years of experience with Ogre3D and that was frustrating to say the least.

Eevee is being developed as a tool for prototyping models for games. It's not a game engine.

Most freeware open source products are dead or are dying because freeware don't offer any notable incentive to developers. I have witnessed many times also that the users of freeware products tend to complain and ask more than what's being provided "as is" by the developers of freeware software. In other words they're ungrateful.

Not many (and I pity those who do) are willing to break bones and work for free. I would rather see a product made by professionals who are happy to maintain and improve the product for as long as they get something in return. That is fair.

Share this comment


Link to comment

In the open source community, many people donate code, and projects. This is a major features in the GNU/Linux community, however many do get paid, whether as a wadge or donation, from one company, or organisation. Globally a lot of people will also donate code and spend time contributing to the free, as in speech, and open cause. Licenses such as the GPL, protect the freedom of code and distribution of code.

https://en.wikipedia.org/wiki/GNU_General_Public_License

Share this comment


Link to comment

Hi!

Good news for the new engine, and keep up the work! Do you plan to have the new engine have it's own editor later, when the framework is made stable and most of the required features?

Unfortunately I will never subscribe to anything. Dropped Adobe the minute they switched to this, and decided to use Krita and Manga studio instead of Photoshop... 

If you would later on, offer like for payments for a full year (5$ month x 12 = 60$), and pay for renewal, I would take this immediately!

That's the only way I accepted to join and play with my friends on Eve Online. For me the problem with subscriptions and my low income, is that something could happen and I would be in problems. Paying "per year", would allow me to pay when I have sufficient funds and stay in control.

Since Adobe, Autodesk, and others drive from way of transaction, it's really good idea to try this out. It just that this mode of payment is not for me.

Share this comment


Link to comment

I think there are few who make a game regardless of the engine and market it. I think most of us are fond of this. When I say that nothing is free, is that there will always be a trap that takes cost of something, I put the example of video games for mobile, with ads, and the question is Are they really free ?. The fact is that if you are a person who has focused on marketing a project that you do regardless of the engine you use, you will be willing to invest money, therefore you will have the objective of recovering that investment. The majority of users take the engines and do nothing, those are the statistics, but for people interested in this, you can achieve something, it is a business model. For my part it is impossible to have access to a monthly payment, but there are many alternatives, and leadwerks is one of those alternatives that offers the possibility of developing a video game.

Share this comment


Link to comment

I think it depends on - mean there is a big difference - if you are a "hobbyer" game maker who is trying to build something between your family and your real life-job, or if you are a team of 50 artists working hard on a project. 

I have to say I have no hope making a game that will make me rich enough that it could support my life and let my children good study. So I will never go for a subscription.

The marketing is overfulled of very good games and even though litttle companys are going insolvency. It's just a capitalism law that the bigger are going bigger. 

That's a pity for the others smaller developppers like Deep Shadows (Xenus, the precursors) or Topware (II worlds) or THQ (STALKER, Metro, Homefront, Darksiders..) who get (got?) nice good games ideas and projects, definitiv have no money but would merit success.

Share this comment


Link to comment
16 hours ago, DoomSlayer said:

After the beta there will be a buy once licence? 

Yes, a regular buy-once license will be available.  I personally am not a big fan of subscription software for myself as a customer, but a lot of people like to have that option, especially when the monthly amount is very low.  And from my perspective a steady monthly revenue is very appealing because I can hire people more easily that way.

Share this comment


Link to comment
8 hours ago, Christian Clavet said:

Good news for the new engine, and keep up the work! Do you plan to have the new engine have it's own editor later, when the framework is made stable and most of the required features?

Leadwerks GUI was created in anticipation of the Leadwerks 5 editor, which will use Leadwerks GUI on all platform.  Smart pointers also will make it a lot easier to handle all the complicated data management of the editor.  So yes, a new editor will be created, and things have been moving with a plan in this direction for a long time.

Share this comment


Link to comment
12 hours ago, Josh said:

a new editor will be created, and things have been moving with a plan in this direction for a long time.

Just asking to get clarity: Will we have the obligation to pay for LE5 or will this be sometime more in the future be a free update for the owners of LE4 ? Does this mean the end of LE4 and what we know of it ?

Share this comment


Link to comment

Not sure what you mean by "end" but like LE2, 4 will still be around but unsupported.  There won't be a free update but Josh said he was considering a discount for current owners to upgrade.

Share this comment


Link to comment

Josh has said that le 4 will still be available to buy.I hope this comes true. le 2 was not much protected when le 3 came out.

I still have a copy but cannot find the api examples. Not tooo worried about le 2 though as I love le 4. Will I buy le 5? Hurry up Josh I am 93 years old now.

Share this comment


Link to comment

Josh did say LE 4 "will always be available" in the archive.

I do hope it will remain available. I don't mind if updates are stopped. I just need access to the software. I have to use LE 4.3 for my business. I am working hard to publish my game in Steam and I will need Leadwerks 4.3 to maintain it for as long as possible.

I have multiple projects lined up and I plan to use my current framework made with LE 4.3. It works so there's no need for me to change anything. I won't have to upgrade to LE 5 for a while. And when I'm ready and LE 5 is ready, I will rebuild my entire game application framework to support the new features LE 5 has to offer (multi-threading, double precision, unicode support, etc).

Share this comment


Link to comment

With "end" I mean I have spent hours becoming able to master this engine enough so that I can build funny games like I enjoy to do it and I really do not need a revolution. Beacuse I'm not challenging with the modern technik, I just can have fun with LE4, it is at my level.

I mean I'm very happy each time Josh is repairing or helping with problems or bugs we encounter, updating the engine for a better quality, and 4.3 or 4.4 was just very good enough for me to want to use it all the time I want like a utility I paid for.

I paid for leadwerks 4 and I hope I can use it 20 years more if I want, you know ? Without having to subscribe anything, like it was told as I buy this great software.

I would be something sad to have learn all this for having to quit in 1 or 2 years. That's what I mean with "end".

Share this comment


Link to comment

So, is it possible to change the render type of the engine? I know this may seem vague, but would it allow me to create my own shaders similar to UE4 and cryengine without performance hindrances? I'm not entirely sure if I am able to do it with this current version of leadwerks. I just find that the renderer of this editor to be clunky or very similar to the FEAR series.

Share this comment


Link to comment
On 8/26/2017 at 4:50 AM, Josh said:

Yes, a regular buy-once license will be available.  I personally am not a big fan of subscription software for myself as a customer, but a lot of people like to have that option, especially when the monthly amount is very low.  And from my perspective a steady monthly revenue is very appealing because I can hire people more easily that way.

I got a little nervous when I read your post at first, but now that a buy-once model is still gonna be used when it's release, I feel better. I see the subscription model for beta software like a Patreon of a sort. Best all, you know you're doing something right or wrong based on number of subscriptions, so you can dynamically change things based on real feedback rather than assumptions. 

Share this comment


Link to comment

I will be back in the office in Kiev tomorrow, but the quick answers are LE4 will continue being supported and available on Steam, and the documentation will simply move to a /learn/4 folder on this site.  Code changes for most games to run in LE V/5 are actually going to be pretty minimal for most people.  The biggest thing will be the elimination of addref/release and declaring all objects as shared pointers:

This doesn't even affect Lua code since those variables are dynamically typed, and you can save some trouble by using the auto keyword in C++.

Share this comment


Link to comment

That's really cool Josh that you tell and plan this, so if we build a game and would like in a few years add or change a feature, this should be possible... Sorry but everything else would be nonsense when you consider how much time it costs making a game.

Share this comment


Link to comment

" Leadwerks 5 is designed to be the most advanced game engine in the world " :lol:

LE4 is a great engine, but I mean come on.

Share this comment


Link to comment

For me the great thing about Le4 is the clean, consistent and easy to remember Api functionality.

Other engines are more complex in that redard.

Share this comment


Link to comment
8 hours ago, Crazycarpet said:

" Leadwerks 5 is designed to be the most advanced game engine in the world " :lol:

LE4 is a great engine, but I mean come on.

I said what I meant.  The performance will be totally revolutionary.

Share this comment


Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Blog Entries

    • By reepblue in reepblue's Blog 5
      Loading sounds in Leadwerks has always been straight forward. A sound file is loaded from the disk, and with the Source class emits the sound in 3D space. The sound entity also has a play function, but it's only really good for UI sounds. There is also Entity::EmitSound() which will play the sound at the entity's location. (You can also throw in a Source, but it'll auto release the object when it's done.)
      While this is OK for small games, larger games in which sounds may change might mean you have to open your class, and adjust the sounds accordingly. What if you use the sound in multiple places and you're happy with the volume and pitch settings from an earlier implementation? You could just redefine the source in a different actor, but why should you?
      A solution I came up with comes from SoundScripts from the Source Engine. With that engine, you had to define each sound as a SoundScript entry. This allowed you to define a sound once, and it allowed for other sound settings such as multiple sounds per entry. I thought this over, and with JSON, we can easily create a similar system for Leadwerks 4 and the new engine.
      I first started with a dummy script so I can figure out how I wanted the end result to be.
      { "soundData": { "Error": { "file": "Sound/error.wav", "volume": 1.0, "pitch": 1.0, "range": 0.25 }, "RandomSound": { "files": { "file1": "Sound/Test/tone1.wav", "file2": "Sound/Test/tone2.wav", "file3": "Sound/Test/tone3.wav" }, "volume": 1.0, "pitch": 1.0, "range": 0.25 } } } In this script, we have two sound entries. We have an error sound (Which is suppose to be the fall back sound for an invalid sound entry) and we have a sound entry that holds multiple files. We want a simple, straight forward. entry like "Error" to work, while also supporting something "RandomSound" which can be used for something like footstep sounds.
      The script is streamed and stored into multiple structs in a std::map at the application start. We use the key for the name, and the value is the struct.
      typedef struct { std::string files[128]; char filecount; float volume; float pitch; float range; bool loopmode; } sounddata_t; std::map<std::string, sounddata_t> scriptedsounds; Also notice that we don't store any pointers, just information. To do the next bit, I decided to derive off of the engine's Source class and call it "Speaker". The Speaker class allows us to load sounds via the script entry, and support multiple sounds.
      You create one like this, and you have all the functionalities with the Source as before, but a few differences.
      // Speaker: auto speaker = CreateSpeaker("RandomSound"); When you use Play() with the speaker class and if the sound entry has a "files" table array, it'll pick a sound at random. You can also use PlayIndex() to play the sound entry in the array. I also added a SetSourceEntity() function which will create a pivot, parent to the target entity. From there, the Play function will always play from the pivot's position. This is a good alternative to Entity::EmitSound(), as you don't need to Copy/Instance the Source before calling the function as that function releases the Source as mentioned earlier. Just play the speaker, and you'll be fine! You can also change the sound entry at anytime by calling SetSoundEntry(const std::string pSoundEntryName); The creation of the Speaker class will start the JSON phrasing. If it has already been done, it will not do it again.
      Having sounds being loaded and stored like this opens up a lot of possibles. One thing I plan on implementing is a volume modifier which will adjust the volume based on the games volume setting.Right now, it uses the defined volume setting. It's also a part of another system I have in the works.
    • By Josh in Josh's Dev Blog 1
      I've been doing some work on the sound system in Leadwerks 5 beta, and I added EAX effects in. If you have a dedicated sound card this can be used to add some nice reverb effects that make your sound environment sound a lot more real:
      Here's the simplest usage:
      auto fx = LoadSoundEffect("Sound/FX/sewerpipe.json"); auto listener = CreateListener(world); listener->SetEffect(fx); This will apply the effect to all mono sources. Stereo sources are assumed to be music or GUI noises, and will be unaffected. Eventually, the way I see this being used is a script attached to a CSG brush that changes the listener's EAX effect when the player enters and leaves the volume, but the above shows the API approach.
      I exported all the EAX presets into JSON files like so. You can load one of the existing files, or if you are feeling really creative you can try making your own:
      { "AirAbsorptionGainHF": 0.99426, "DecayHFLimit": 0, "DecayHFRatio": 0.89, "DecayLFRatio": 0.41, "DecayTime": 2.76, "Density": 1.0, "Diffusion": 0.82, "EchoDepth": 0.17, "EchoTime": 0.13, "Gain": 0.316228, "GainHF": 0.281838, "GainLF": 0.0891251, "HFReference": 2854.4, "LateReverbGain": 0.891251, "LateReverbPan": [0.0, 0.0, 0.0], "LFReference": 107.5, "LateReverbDelay": 0.02, "ModulationDepth": 0.0, "ModulationTime": 0.25, "ReflectionsDelay": 0.029, "ReflectionsGain": 0.354813, "ReflectionsPan": [0.0, 0.0, -0.0], "RoomRolloffFactor": 0.0 } Here's the full list of available presets:
      CastleSmallroom CastleMediumroom CastleLongpassage CastleLargeroom CastleHall CastleCupboard CastleCourtyard CastleAlcove FactoryAlcove FactoryShortPassage FactoryMediumRoom FactoryLongPassage FactoryLargeRoom FactoryHall FactoryCupboard FactoryCourtyard FactorySmallRoom IcepalaceAlcove IcepalaceShortPassage IcepalaceMediumRoom IcepalaceLongPassage IcepalaceLargeroom IcepalaceHall IcepalaceCupboard IcepalaceCourtyard IcepalaceSmallRoom SpacestationAlcove SpacestationMediumRoom SpacestationShortpassage SpacestationLongPassage SpacestationLargeRoom SpacestationHall SpacestationCupboard SpacestationSmallRoom WoodenAlcove WoodenShortPassage WoodenMediumRoom WoodenLongPassage WoodenLargeRoom WoodenHall WoodenCupboard WoodenSmallRoom WoodenCourtyard SportEmptyStadium SportSquashCourt SportSmallSwimmingPool SportLargeSwimmingPool SportGymnasium SportFullStadium SportStadiumTannoy Workshop SchoolRoom PractiseRoom Outhouse Caravan Dome Tomb PipeSmall DomeSaintPauls PipeLongThing PipeLarge PipeResonant OutdoorsBackyard OutdoorsRollingPlains OutdoorsDeepCanyon OutdoorsCreek OutdoorsValley MoodHeaven MoodHell MoodMemory DrivingCommentator DrivingPitGarage DrivingInCarRacer DrivingInCarSports DrivingFullGrandstand DrivingEmptyGrandstand DrivingTunnel CityStreets CitySubway CityMuseum CityLibrary CityUnderpass Dustyroom Chapel SmallWaterRoom I might consider implementing Steam Audio in the future (formerly Phonon) but for now OpenAL does everything I want.
    • By Josh in Josh's Dev Blog 7
      An update for Leadwerks 5 is now available.
      The Vulkan data transfer system has been revised and is now simpler but uses more memory. Data is likely to be quadruple-buffered, but it's a fairly small amount of data and this isn't a big concern. 
      I fixed a bad bug where multiple threads were accessing a global variable in the Mat4::GetQuaternion function. This fixes the object flashing glitch that was visible in previous builds.
      The engine is updated to the latest version of Newton Dynamics and kinematic joints work correctly now. The upvector joint is removed and a plane joint has been added for 2D physics, but I don't think it will work yet. Object picking up is implemented in the player controller script.
      I switched out the default scene with a new one using some of @TWahl 's materials.
      Added an FPSWeapon script that loads a gun and makes it sway.
      Entity::AddScript() can now be called in the Start() function of another script with no problems.
      Fullscreen windows are now working.
      The window / display system is changed a bit. New display commands:
      std::vector<shared_ptr<Display> > ListDisplays() std::vector<iVec2> Display::GraphicsModes() You must pass a display object in the window creation command now. Here's how I do it in Lua:
      --Get the primary display local displaylist = ListDisplays() local display = displaylist[1]; --Get the display's highest resolution graphics mode gfxmodes = display:GraphicsModes() gfx = gfxmodes[#gfxmodes] --Create a window local fullscreenmode = false local window if fullscreenmode then window = CreateWindow(display, "My Game", 0, 0, gfx.x, gfx.y, WINDOW_FULLSCREEN) else window = CreateWindow(display, "My Game", 0, 0, 1280 * display.scale.x, 720 * display.scale.y, WINDOW_CENTER + WINDOW_TITLEBAR) end And in C++:
      const bool fullscreenmode = false; //Get the primary display auto displays = ListDisplays(); auto display = displays[0]; //Create a window shared_ptr<Window> window; if (fullscreenmode) { auto gfxmodes = display->GraphicsModes(); auto gfx = gfxmodes[gfxmodes.size() - 1]; window = CreateWindow(display, L"My Game", 0, 0, gfx.x, gfx.y, WINDOW_FULLSCREEN); } else { Vec2 displayscale = display->GetScale(); window = CreateWindow(display, L"My Game", 0, 0, 1280 * displayscale.x, 720 * displayscale.y, WINDOW_TITLEBAR | WINDOW_RESIZABLE | WINDOW_CENTER); } The speed of the point light shadow updating is unbelievably fast. Point light shadows in Leadwerks 4 are very expensive to update because they require six different render passes for each of the six cubemap faces, but in Leadwerks 5 beta with Vulkan they are basically free. I'm sure it will slow down if I add enough points lights and have them all constantly updating, but I don't see any difference at all in the framerate right now when shadows are active. If you are having any trouble with their appearance you can set the global variable MULTIPASS_CUBEMAP to false in C++ at the very beginning of your program.

      This script can be used to display performance statistics. At this time it only shows the framerate but I can expand on this in the future.
      function Script:Start() self.statsEnabled = true self.textcache = {} self.font = LoadFont("Fonts/arial.ttf") self.fontsize = 16 self.textalignment = TEXT_LEFT self.world:EnableStats(self.statsEnabled) self:BindKey(KEY_F11, self.ToggleStats) end function Script:ToggleStats() self.statsEnabled = not self.statsEnabled self.world:EnableStats(self.statsEnabled) end function Script:Update() --Return if disabled or font missing if self.statsEnabled == false or self.font == nil then return end --Hide previously used sprite if self.displayfps ~= nil then self.displayfps:Hide() end --Retrieve the framerate and convert to string --Convert to integer to limit the amount of different string values local fps = tostring(math.ceil(self.world.renderstats.framerate - 0.5)).." FPS" --Check for cached version and create it if it doesn't exist if self.textcache[fps] == nil then self.textcache[fps] = CreateText(self.world, self.font, fps, self.fontsize, self.textalignment, 1) self.textcache[fps]:SetPosition(4,4) self.textcache[fps]:SetColor(0,1,0,0.75) end --Set current sprite and show self.displayfps = self.textcache[fps] self.displayfps:Show() end It may seem like a lot of code just to draw a bit of text onscreen, but the benefit is extreme performance. Instead of drawing one character at a time like the Leadwerks renderer does, this creates persistent text objects and reuses them when needed. That cuts the performance cost of displaying text down to basically zero, making it great for complex GUIs and game interfaces.
×
×
  • Create New...