Jump to content

Entries in this blog

50% reached in less than one week; Work on Leadwerks for Linux begins

Wow! We crossed the 50% mark in less than a week. At this point, the campaign has shown enough strength that I am willing to begin allocating resources to the development of Leadwerks for Linux. (To be clear, we will only deliver a Linux product if the entire target amount is met.) Kickstarter has been fantastic because it allows us to gauge demand before we do the hard work of supporting a new operating system, so we can figure out in advance whether it's worthwhile. Fortunately, it appears there's a lot of Linux users (and people who would like to move to Linux) who want native game development tools for Linux.     We're able to develop Leadwerks for Linux at a relatively low cost because our game engine and editor were designed from the start to be cross-platform compatible. We abstract away any OS-specific code. When porting to a new platform, we just need to replace those OS-specific bits, and past a certain point the rest of the engine will just work. The image below shows how I visualize the code base:     It's interesting that as popular technology is becoming more locked-down, from the Windows 8 closed app store to the increasing DRM requirements of the new consoles, people are responding by showing a new interest in open systems like Linux and Valve's upcoming SteamBox. I'm a hardcore PC gamer, and it's disappointing to me how Microsoft has treated games on Windows like an unwanted child for so long. Games could be the niche Linux uses to gain greater market share. Many people have told me that Leadwerks running natively on Linux would be the last application they need to stop dual-booting and switch completely over to Linux.   So let's make it happen!

Josh

Josh

Refining Smooth Lightmaps

You may recall a few weeks ago we added consideration of smooth groups in the lightmap calculations. (Explanation for new people: we use a forward renderer with static lighting as a fallback that runs across-the-board, and are working on a deferred OpenGL 4 renderer for the next major update. I've been working with deferred rendering since 2006, so this is relatively easy to add.)   You may recall the case of luxels (lightmap pixels) that fall outside a face were problematic, and I used a bit of a hack to resolve them. It turns out my hack was fine in situations where the face was interpolated in a single direction, but failed when the face was curved on two axes. You can see the ugly artifacts that appear across the edges on this sphere:   I wanted to resolve this today, and it was quite difficult. I tried increasing the size of the polygon edges mathematically, I tried moving the test point inside the polygon. For some reason these both failed, and I couldn't tell exactly why.   The solution was very simple. I just found the closest edge the test point lies along, and then did a linear interpolation between the two corners making that edge. It works perfectly, and gives the exact same value moving the point inside the polygon would yield:   So you can look forward to improved static lighting on all surfaces in the next patch. The images below are texture-based lightmaps, not dynamic shading:   CSG modeling is very easy to use, but in the past has been limited to faceted and chunky shapes. Smooth groups let you model complex curved architecture with our CSG modeling tools.

Josh

Josh

Leadwerks Seeks to put Game Development on Linux

Linux is a solid and secure operating system that’s perfect for gaming, but at this time Windows remains the lead platform for PC games. One company wants to change that by putting the game development process right on Linux. Leadwerks Software has launched a Kickstarter campaign to bring their game development software to the Linux operating system. The company says this will allow users to build and play games without ever leaving the Linux operating system.   The company's Kickstarter page lists three goals for the campaign. First, they point out that most Linux games are ported over from Windows, rather than being developed natively on Linux. The company wants to change this by putting the game development process on Linux.   Second, the company hopes to expand the Linux library of games. They say that putting game development tools in the hands of Linux users will allow more Linux games to be built, and can even lead to Linux-exclusive titles.   Leadwerks is known for advanced graphics, and the company says they want to bring this to Linux. This will let Linux users play AAA games that run natively on Linux, instead of going through emulators like WINE. The company points out that the superior performance of OpenGL on Linux makes it the perfect platform for AAA games.   Leadwerks is also running a Greenlight campaign to put Leadwerks on Steam and integrate Steam features to streamline the game development process.   Leadwerks Software aims to raise $20,000 in 45 days to build Leadwerks for Linux. "We're really excited to be working with Steam and the Linux community," said Josh, founder of Leadwerks Software. "We think there's a unique opportunity here. The timing is right. I think Linux is really ready for mainstream PC gaming, and we really just want to take Linux gaming to the next level".

Admin

Admin

Leadwerks for Linux

Last week we launched our Steam Greenlight campaign to get Leadwerks into the hands of the Steam community. This week, we're rolling out the second stage of our plan with a Kickstarter campaign to bring Leadwerks to Linux. This will let you build and play games, without ever leaving Linux. The result of this campaign will be Leadwerks 3.1 with a high-end AAA renderer running on Linux, Mac, and Windows, with an estimated release date before Christmas.   Valve has given Linux users a taste of PC gaming, so now it's up to us to reach the Linux community with our message. If you dig this, please help spread the word that someone is trying to put game development on Linux: http://www.kickstarter.com/projects/1937035674/leadwerks-build-linux-games-on-linux     Leadwerks for Linux Linux is a solid and secure operating system that’s perfect for gaming, but at this time Windows remains the lead platform for PC games. We want to change that by putting the game development process right on Linux, with Leadwerks for Linux. This will allow you to build and play games without ever leaving the Linux operating system.   Leadwerks is a visual tool for building any kind of 3D game, including dungeon crawlers, first-person shooters, and side-scrollers.. We want to put game development on Linux with Leadwerks for Linux. Our campaign has three goals:   Linux Game Development. On Linux. It’s not enough just to export games to Linux. We want to put the game development process on Linux, so you can build and play games, without ever leaving the Linux operating system. We have a complete visual editor that handles all aspects of the game development process, and we’re porting it to run natively on Linux. We’re using GTK for the user interface, so our editor will look and feel like a native Linux application.   We're targeting Ubuntu 12.04 to start with, and will support other distros as we make progress. You'll also be able to compile games for Windows and Mac...if you feel like sharing.     Expand the Linux Library of Games Our second goal is to facilitate expansion of the Linux library of games, and encourage the production of Linux-exclusive titles. The Linux community is pretty intelligent, and they have a lot of good programmers. We think by putting the appropriate tools in their hands, it will enable them to make great Linux games.   Hoodwink by E-One Studio   AAA Graphics on Linux Leadwerks is known for having great graphics. We want to push Linux graphics beyond anything that’s ever been done. Linux is the perfect platform for triple-A graphics, because it has OpenGL performance faster than Windows or Mac. We’re taking advantage of this performance with deferred lighting, hardware tessellation, and up to 32x multisample antialiasing.   The Zone by Dave Lee   Steam Integration When Valve announced Steam was coming to Linux, that was a clear sign to us that Linux is ready for PC gaming. We’re working to integrate Leadwerks with Steam and take advantage of new features Steam offers for developers.     Steam Workshop We’re hooking into the Steam Workshop to deliver game assets. This includes models, textures, scripts, and maps, so you can get everything you need to make games. When you find an object in the Steam Workshop you want to use in your game, just hit the “Subscribe” button and it will show up right away, ready to use in Leadwerks. We’re also adding support for Valve’s asset formats, so you can access lots of great content from the rest of the Steam Workshop, and add it to your game.   Export for Steam We’re working with the Steam SDK to make it easier to submit Linux games to Greenlight. Just press a button, and your game files will be packaged up, ready to send to Steam.[/color]   Features Leadwerks is a powerful yet easy to use game engine with thousands of users worldwide. Here are just a few of the main reasons we think Linux users will love Leadwerks.   C++ Programming Programming with Leadwerks is a breeze. Underneath our visual editor lies a powerful yet easy to use programming API that can be accessed in C++, Lua, and other languages. With documentation and examples for every single command, you’ve got everything you need to make any kind of game.   Visual Scripting For scripting, we use the Lua script language, just like in Crysis, World of Warcraft, and hundreds of other games. We’ve got a built-in script editor, so you don’t have to switch back and forth between Leadwerks and an external editor. It’s even got a built-in debugger so you can step through your script and see everything that’s going on in the game. The flowgraph editor is used to connect scripted objects and make gameplay happen. This lets map designers set up sequences of events and complex gameplay, with no programming required.   Constructive Solid Geometry Finally, we use a level editor based on constructive solid geometry. This lets everyone make game levels, without having to be an expert. If you’re familiar with Valve’s Hammer Editor, you’ll feel right at home in Leadwerks.   Combat Helo by Tricubic Studios   We plan to deliver a visual editor that handles every aspect of the game development process, a powerful yet easy to use programming API, with triple-A graphics, all running natively in Linux. By working with Steam and the Linux community, our goal is to make Linux the number one platform for PC gaming. Thank you for helping us take Linux gaming to the next level.   Big Five Game Hunter by Unidev   Risks and challenges We expect to encounter some graphics driver bugs. This is always the case when you are pushing advanced graphics. Fortunately, we have good relationships with the major graphics hardware vendors, and have been able to get driver bugs fixed on other platforms in the past. Valve Software has done some of the heavy lifting for us here, by prompting the graphics hardware vendors to get their drivers in good shape.   Our GUI has a GTK implementation for Linux, but we expect to encounter some problems that have to be overcome. Our GTK Scintilla implementation (for the code editor) has not been written, and it's a complex library.   Since the Linux file system is case-sensitive, we expect to have to modify some code to work properly on Linux.   We're implementing a new method for terrain layers using virtual texturing. We do not anticipate any problems here, but it is one of the few features we haven't fully prototyped.   Although building Leadwerks for Linux will undoubtedly present some difficult problems, our team has a lot of experience with multi-platform development and I'm confident we can deal with all issues we encounter.

Josh

Josh

Leadwerks wants to put game development on Steam

Valve Software's Steam is a game distribution platform used by millions of gamers worldwide. What started as simply a way to buy and update games has evolved into a vast ecosystem with instant messaging between friends, game hubs featuring players' screenshots and video, and workshops for sharing user-generated content. Last fall, Valve added software titles to its lineup of products, and implemented Greenlight, a system that lets users vote directly on which titles should be sold on Steam. Valve says this removed the bottleneck their manual approval process imposed so that more titles can be approved for Steam.   One company wants to push the Steam ecosystem even further by building the process of game development right into Steam. Leadwerks Software has announced the launch of their Greenlight campaign for Leadwerks 3: Steam Edition. Leadwerks is a visual tool for building any kind of 3D game, including dungeon crawlers, first-person shooters, and side-scrollers.   The company's Greenlight page explains they are working with the Steam SDK to integrate features of the Steam ecosystem. For example, the company plans to open up a workshop where Steam users can buy and sell digital goods for making games. This lets developers get all the content they need straight from Steam. Game assets like models and images take a long time to produce, so this feature could remove a big roadblock for producing finished games. Leadwerks is also simplifying the Steam publishing process by packaging up game files so they are ready-to-use in Steam. This makes it easier for indie developers to put their games on Steam.   Leadwerks founder and CEO Josh says that "I think Steam users are a good match for us because Valve has been such a big influence in my design. Our editor is similar to the Source Engine workflow, so modders will be able to pick it up pretty quickly. There's a lot of talent in the mod communities, and we're trying to channel that". Lua script is another benefit, since it's already used in hundreds of games, and many PC gamers are used to tweaking game code. The software also has some visual scripting features that make life easier for non-programmers who just want to design a game quickly.   You can vote for Leadwerks by visiting http://www.leadwerks.com/greenlight or find it in the software section of Steam Greenlight.

Admin

Admin

Leadwerks on Steam

I first connected with Valve Software during GDC 2013. I recognized an opportunity to work together, so last week I paid a visit to Bellevue, Washington and met with Valve employees (no one has job titles in the company except Gabe) and discussed Leadwerks and the evolving Steam platform.   Today, I'm excited to announce our Greenlight campaign for Leadwerks 3: Steam Edition.     This software will be distributed through Steam and allow you to build games with Lua script and publish them to Windows and Mac through Steam. We think Steam users will love Leadwerks, for a few reasons.   Constructive Solid Geometry First, we use a level editor based on constructive solid geometry. This lets everyone create game levels, without having to be an expert. If you're familiar with Valve's Hammer Editor, you'll feel right at home in Leadwerks. It's fun to make game levels, and anyone can do it.   Write Games with Lua Script Second, we use Lua script, just like in Garry's Mod, World of Warcraft, Crysis, and hundreds of other games. We have a built-in script editor so you don't have to switch back and forth between Leadwerks and an external program. It's even got a built-in debugger so you can step through your script and see everything that's going on in the game.   Visual Scripting Finally, we use a flowgraph editor to connect scripted objects and make gameplay happen. You can view the functions of scripted objects and just click and connect them. This lets map designers create sequences of events and complex gameplay, with no programming required.   But it's not enough to just put Leadwerks on Steam. We want to fully integrate these technologies to deliver a complete game development platform, running within Steam.   Steam Workshop Integration We're hooking into the Steam Workshop to deliver game assets. This includes models, textures, scripts, and maps, so you can get everything you need to make games. When you find an object in the Steam Workshop you want to use in your game, just hit the "Subscribe" button and it will show up right away, ready to use in Leadwerks.   Support for Valve Asset Formats We're also addng support for Valve's asset formats so you can access lots of great content from the rest of the Steam Workshop and add it to your game.   Export for Steam We're working with the Steam SDK to make it easier to submit your games to Greenlight. Just press a button and your game files will be packaged up ready to send to Steam.   Our dream is to unite the entire Steam community into this big global game-producing factory, where everyone can do what they're best at. We need your help to make it happen. Please vote for us on Greenlight and show Valve the Steam community wants to build their own 3D games with Leadwerks.   We'll do our best to make sure all current Leadwerks users can get Leadwerks 3: Steam Edition added to their Steam account for free. To help facilitate this, please add your Steam ID to your Werkspace profile.   Vote for Leadwerks To vote for Leadwerks 3: Steam Edition on Greenlight, visit www.leadwerks.com/greenlight or find us in the Greenlight software section in Steam.

Josh

Josh

Leadwerks 3 Update Available

This update brings the addition of lightmapping across curved surfaces with smooth groups. The image below is a set of lightmapped CSG brushes, not mesh lighting. You can read a detailed account of our implementation of this feature here.     The project manager now includes an "Update" button, so you can easily update your project any time we modify files in the template folders. Although we tested with no problems, it is recommended you back up your project before using this feature. The editor will make a copy of any overwritten files, as an added precaution.     You've now got full control over all the features and settings in the Leadwerks editor, through the new Options dialog. This gives you control over various program behaviors and settings. You can toggle grid snapping, control the snap angle, and lots of other stuff.     We have made one change to the script system. Our multiple script design worked reasonably well during the development of Darkness Awaits. The flowgraph interactions were clean, but when it came to AI and player interaction, things got messy. For example, when the player pushes a button we perform a raycast or proximity test to get the entity hit. Then we have to go through all the scripts attached to the entity, looking for a relevant script attached to it: --Check if GoblinAI component is present if entity.script.GoblinAI~=nil then   --Call the TakeDamage() function entity.script.GoblinAI:TakeDamage(10)   end   That works okay in our example, but when we consider other enemies we want to add, suddenly it gets ugly. We have a few choices. Add an if statement for every new AI script, checking to see if it is present.
 
Separate the health value out into its own script.
 
Loop through all attached scripts looking for a TakeDamage() function.
  It should be obvious why option #1 is a bad idea. This would make our code highly interdependent. Encapsulation is one of our goals in game scripting, so we can achieve drag and drop functionality (or as close to that as is reasonably achievable without limiting ourselves).   The second option would solve our immediate problem, but this approach means that every single script variable two scripts access has to be a separate script. The thought of this just shuts my creativity down. I already think it's tedious to have to attach an AI and AnimationManager script to an entity, and can't imagine working with even more pieces.   The third option is the most reasonable, but it greatly impedes our coding freedom. It means every time two entities interact, you would have to do something like this: --Check if GoblinAI component is present if entity.components~=nil then   for local k,v in entity.components do   if type(v.TakeDamage)=="function" do   --Call the TakeDamage() function v:TakeDamage(10) end end end   If you actually wanted to return a value, you would just have to get the first value and exit the loop: local enemyhealth=0   --Check if components table is present if entity.components~=nil then   --Iterate through all attached components for local k,v in entity.components do   if type(v.GetHealth)=="function" do   --Call the GetHealth() function enemyhealth = v:GetHealth() break end end end   This is a major problem, because it means there is no firm "health" value for an entity. Sure, we could consider it a "HealthManager.health" value but therein lies the issue. Instead of having plug-and-play scripts everyone can share, we have to devise a system of expected script names and variables. This breaks compartmentalization, which is what we were going for in the first place. Both Chris and I realized this approach was fundamentally wrong.   After careful consideration, and based on our experience working on Darkness Awaits, we have restructured the system to work as follows, with a 1:1 entity:script relationship: --Check if script is present if entity.script~=nil then   if type(entity.script.TakeDamage)=="function" do   --Call the TakeDamage() function entity.script.TakeDamage(10) end end   You can set an entity's script with the new function: Entity::SetScript(const std::string& path)   You can also set and get entity script values right from C++: virtual void SetString(const std::string& name, const std::string& s); virtual void SetObject(const std::string& name, Object* o); virtual void SetFloat(const std::string& name, const float f);   And it's easy to call a script function from your C++ code: virtual bool CallFunction(const std::string& name, Object* extra=NULL);   The properties dialog is changed slightly, with a consistent script tab that always stays visible. Here you can set the script, and properties will appear below, instead of being spread across a bunch of different tabs:   Maps with entities using only one script (which has been almost everything we see) are unaffected. Objects with multiple scripts need to have their code combined into one, or split across multiple entities. I am very reluctant to make changes to the way our system works. Our API has been very stable since day one of release, and I know it's important for people to have a solid foundation to build on. However, I also knew we made a design mistake, and it was better to correct it sooner rather than later.   Probably the best aspect of the script system in Leadwerks 3 has been the flowgraph connections between scripted objects. That's been a big winner:     As we use the editor more and hear about the community's experience, it allows us to refine our tools more. One of the more subtle but we made is in the properties editor. One of the annoyances I experienced was when setting a property like mass or position when an entire hierarchy of entities was selected. Obviously I didn't want to set the mass for every single bone in a character, but how to tell the editor that? I went through all the properties, and for ones that the user is unlikely to want set, I made the following rule: If the entity has a selected parent anywhere in the hierarchy, it gets ignored when properties are retrieved and applied. (Other things like color will still work uniformily.) Just try it, and you'll see. It speeds up editing dramatically.   In a similar vein, we finally solved the problem of "too many selection widgets", We only display the top-most control widget for each group of selected objects. Again, it's easier for you to just try it and see than for me to explain in detail. If we did our job right, you might not even notice because the editor will just do what you want without any thought.   You've also got control over the color scheme, and can use it to customize the look and feel of the 3D viewports and code editor.     On Windows we fixed an annoyance that triggered menu shortcuts when the user tried to copy and paste in text fields. This tended to happen in the properties editor. We're working to resolve the same issue in the Cocoa UI for Mac.   I'm a big fan of the 3ds max Max Script system, so in the output panel we've added a real-time Lua console:   You can type Lua commands in and interact with Leadwerks in real-time. Just for fun, try pasting in this line of code and see what happens: for i=0,10 do a = Model:Box(); a:SetColor(math.random(0,1),math.random(0,1),math.random(0,1)); a:SetPosition(i*2,0,0); end   You can't create objects the editor will recognize (yet), but it's fun to play with and should give you an idea of where we're going with the editor.   This is an important update that includes new features and enhancements that improve usability and workflow. Thank you for your feedback. It's great to see all the activity that is taking place as people learn Leadwerks 3.

Josh

Josh

Lightmapping curved CSG objects

I'm a big fan of constructive solid geometry because it allows people without advanced modeling skills to design a game level that looks great. In fact, I originally got my start in game development using the Quake and Half-Life modding tools, making game maps.   One of the criticisms of CSG has been that it only allowed creation of faceted objects. (Valve's Hammer Editor has a workaround for this that lets you set smooth groups, but you can't see the results until they are run in the game.) This was preventing me from making some game level features I wanted, like curved arches and rounded corners, so I decided to do something about it.   Leadwerks supports smooth groups for CSG objects. To access the controls, switch to face editing mode and then select the objects tab in the right-hand sidepanel:   It was fairly easy to calculate vertex normals from smooth group information. However, that information still has to be fed to the lightmapper or the lighting will appear faceted across a curved surface:   To solve this, I needed to calculate the interpolated normal across the surface, and use that for the lighting equation for each luxel (lightmap pixel). Initially, I thought I could use a simple weighted average. Vertices near the luxel would have a high influence, and vertices further away would have less influence. However, it quickly became apparent this would not produce anything close to accurate results! Gouraud Shading The problem I was facing is actually a very common calculation that is done in real-time on the GPU. This was the first time I ever had to calculate it myself. It turns out the problem was first solved before I was born by a clever fellow by the last name of Gouraud, and thus we call it Gouraud Shading or Gouraud Interpolation.  The algorithm works like this: draw a straight line in any direction from the point you want to interpolate. It doesn't matter what angle, as long as it's one straight line. Now find the two triangle edges the line intersects. Each of those edges is connected to two vertices, each with a normal. Use a linear interpolation to weight those two normals, for each point. Finally, use the distance of both these points from your original position to weight their interpolated normals: More information on this technique can be found here. Implementation Getting this to work on a CSG lightmapper was difficult for two reasons. First, CSG objects consist of n-sided polygons, not triangles. Although they can be broken down into triangles, I was worried that visual artifacts might arise. Second, lightmaps have a user-defined bleed border, and the luxels of a lightmap extend beyond the edges of the polygon being lit. Gauroud shading requires the point being interpolated actually be inside the triangle. Our luxel positions could be inside any of the triangles that make up a polygon face, or they might not be on the face at all!  I decided to start by only worrying about the luxels that fell inside one or another triangles on the face, and solve the outliers later. Fortunately, the transform and math classes built into Leadwerks 3 made it fairly easy to convert all the points into flat 2D space to solve the problem. As expected, my first attempt identified the luxels that fit inside a particular triangle, but the luxels along the edges could not be processed, and appear dark:   I added an error threshold for the triangle intersection routine, which got rid of the black borders, but turned out to be a bad idea. Some of my values were being interpolated in the wrong direction, as you can see in the following images:       In this image, it's almost working, but the error threshold is causing luxels along the center seam to get lit incorrectly. Additionally, a few luxels in the top right are forming a dark border:   The final piece of this puzzle was to deal with luxels that didn't fit into a particular triangle, This was a pretty puzzling problem, and for a while I thought there might not be a "correct" solution. However, if you think about it intuitively, a luxel that lies just outside a triangle should use the same lighting as a luxel just inside that triangle, right next to it.   For the remaining unsolved luxels, I tested each of their distances to each triangle in the face they belong to. I found a nearest triangle to each, then found the nearest point on that triangle, and calculated the normal from that point's position. Results This technique produces beautiful smooth lightmapping on curved surfaces:   The algorithm works with curves, arches, sphere, any CSG objects that use smooth groups. So now you can make those castles, arches, and towers you've always wanted to build:   This feature will be available in the next update to Leadwerks 3.

Josh

Josh

Leadwerks 3 Update Brings Rendering Enhancements to Mobile

An update for Leadwerks 3 has been released, bringing new graphical enhancements to mobile games. Building on the efficient art pipeline and user-friendly tools of Leadwerks 3, the engine now supports projected shadows for characters and other dynamic objects. This technique works by casting a shadow onto the surrounding world geometry, to provide real-time shadows that run fast on all platforms.     To enable dynamic shadows on a single object, just select it in the editor and choose the new "Dynamic" option in the "Cast Shadows" property. You can also do this in code by calling Entity::SetShadowMode(Light::Dynamic).     Leadwerks 3 has also gotten a visual upgrade with the addition of post-processing effects. In Leadwerks 2, all post-processing effects like volumetric light scattering, screen-space ambient occlusion, depth-of-field, and bloom were hard-coded. That is, they were written into the core engine and it was difficult to customize the renderer. Leadwerks 3 has added a new command, Camera::AddPostEffect(), which allows the user to attach a shader right to a camera, to automatically render post-processing effects.   The new update also includes features to make it easier to share projects. The Project manager has been outfitted with new Import and Export buttons. You can export an entire project as a single ZIP archive. You can also import a project from a .zip or .werk project file. This makes it easy to share projects and collaborate with other Leadwerks developers as a team.   Leadwerks is a fast and flexible development platform for building mobile games with native code. You can download a 30-day trial version on the website here.

Admin

Admin

Leadwerks 3 Brings Native Code to Mobile Games

Leadwerks Software announced today the release of Leadwerks 3, their new development platform for building mobile games with native code. Based on the technology developed for their successful game engine for PC, Leadwerks 3 brings a totally new approach to mobile game development.   While environments such as Unity and MonoDevelop use managed code...that is, code that is designed to be easily run on multiple devices...Leadwerks uses an approach called native code. Applications built with native code are optimized to work with each platform. That means games written with Leadwerks will run faster and be more powerful than their managed code counterparts.   Mobile is growing rapidly, but there still exists a gap between mobile gaming and the larger game industry, which has traditionally focused on consoles. Professional game studios overwhelmingly favor native code because of its speed and flexibility. By focusing on the standard the game industry already uses, Leadwerks provides both professional studios and indie developers with an easy pathway into mobile. Games written in C++ can be ported to Leadwerks 3 without having to rewrite them in a new programming language.   Leadwerks 3 brings some innovative new approaches to the table: The editor features tools for building game levels using a technique called constructive solid geometry. This streamlines the process of creating games, and makes it easier for artists to see what their games will look like as they build them.
Leadwerks 3 uses automatic asset conversion. This means that images and objects can be reloaded on-the-fly, so an image file can be modified in Photoshop and the result will show up in the editor right away. This removes tedious steps from the game development workflow.
AI is supported out-of-the-box. The traversable areas AI can travel within are highlighted in the editor as you build your game level. Pathfinding is dynamic, meaning that if a door opens or a drawbridge lowers, the AI is smart enough to take the new routes that appear.
The script language Lua is also supported, and can be combined with games written in native code. Scripted objects can be linked together in a visual flowgraph editor. This makes it easy to set up game interactions, something that can be a challenge when working with development platforms based solely on code.
  Leadwerks CEO Josh said that “Leadwerks 3 is a big step forward for our company and our users. We’re bridging the gap between mobile gaming and the traditional game industry.” The product received a favorable response at the GDC 2013 expo. ”C++ is the game industry standard. Our market research at GDC 2013 revealed a huge demand for a cross-platform game engine built on native code. We found the design philosophy of Leadwerks resonates with a lot of developers.”   Leadwerks 3 can be purchased from the company’s website for $199, with add-ons for iOS and Android publishing available separately. A source code license is available for professional studios. A 30-day trial can be downloaded from the company’s website.   Leadwerks Software has provided game development tools to thousands of developers worldwide since 2006. It’s technology has been used in commercial games, education, training simulations, and military applications. To find out more, please visit www.leadwerks.com.

Admin

Admin

Lighting enhancements and fixes in Leadwerks 3

After a wild week at GDC 2013, it's nice to be back doing what I do best...writing code!   A new build of Leadwerks 3 is now available. We've added light vector maps so that lightmapped surfaces can display normal mapping effects. Lightmapped materials with normal maps should use the texture "Common/lightvectormap.tex" in slot 4. (If you create a new lightmapped material, this will be done automatically.)   This technique works by calculating the average light vector that influences each luxel in the lightmap. Each vector is weighted by the light's intensity and range to get an overall vector representing the direction most light is coming from. The light vectors are encoded in a secondary light map that looks like this:   This effect will even work with specular reflection, as seen in this totally over-the-top screenshot:   We also made about a dozen small fixes to the engine and editor. For more detail on recent issues resolved, visit the bug reports forum. Like any new software, we've had some teething problems, but it's pretty easy to resolve those issues as they arise. Bugs can be fixed as they are identified, but bad design is forever. Fortunately, I think we've got a great design and a good and stable development system.

Admin

Admin

Rewerking the Asset Class -or- Back that Asset Up

Since you guys are my boss, in a way, I wanted to report to you what I spent the last few days doing.   Early on in the development of Leadwerks 3, I had to figure out a way to handle the management of assets that are shared across many objects. Materials, textures, shaders, and a few other things can be used by many different objects, but they consume resources, so its important for the engine to clean them up when they are no longer needed.   I decided to implement an "Asset" and "AssetReference" class. The AssetReference object contains the actual data, and the Asset object is just a handle to the AssetReference. ("AssetBase" probably would have been a more appropriate name). Each AssetReference can have multiple instances (Assets). When a new Asset is created, the AssetReference's instance count is incremented. When an Asset is deleted, its AssetReference's instance counter is decremented. When the AssetReference instance counter reaches zero, the AssetReference object itself is deleted.   Each different kind of Asset had a class that extended each of these classes. For example, there was the Texture and TextureReference classes. The real OpenGL texture handle was stored in the TextureReference class.   Normal usage would involve deleting extra instances of the object, as follows: Material* material = Material::Create(); Texture* texture = Texture::Load("myimage.tex"); material->SetTexture(texture);// This will create a new instance of the texture delete texture;   This isn't a bad setup, but it creates a lot of extra classes. Remember, each of the AssetReference classes actually get extended for the graphics module, so we have the following classes: Asset Texture AssetReference TextureReference OpenGL2TextureReference OpenGLES2TextureReference   The "Texture" class is the only class the programmer (you) needs to see or deal with, though.   Anyways, this struck me as a bad design. Several months ago I decided I would redo this before the final release. I got rid of all the weird "Reference" classes and instead used reference counting built into the base Object class, from which these are all derived.   The usage for you, the end user, isn't drastically different:   Material* material = Material::Create(); Texture* texture = Texture::Load("myimage.tex"); material->SetTexture(texture); texture->Release();// Decrements the reference counter and deletes the object when it reaches zero   In the Material's destructor, it will actually decrement each of its texture objects, so they will automatically get cleaned up if they are no longer needed. In the example below, the texture will be deleted from memory at the end of the code: Material* material = Material::Create(); Texture* texture = Texture::Load("myimage.tex"); material->SetTexture(texture); texture->Release(); material->Release();// texture's ref count will be decremented to zero and it will be deleted   If you want to make an extra "instance" (not really) of the Asset, just increment the reference counter:   Material* material = Material::Create(); Texture* texture = Texture::Load("myimage.tex"); texture->IncRefCount();// increments ref count from 1 to 2 Texture* tex2 = texture; texture->Release();// decrements ref count from 2 to 1   This makes the code smaller, gets rid of a lot of classes, and I think it will be easier to explain to game studios when I am trying to sell them a source code license.   Naturally any time you make systemic changes to the engine there will be some bugs here and there, but I have the engine and editor running, and mistakes are easy to find when I debug the static library.   I also learned that operation overloading doesn't work with pointers, which i did not know, but had never had a need to try before. Originally, I was going to use operation overloads for the inc/dec ref count commands: Texture* tex = Texture::Create();//refcount=1 tex++;//refcount=2 tex--;//refcount=1 tex--;// texture would get deleted here   But that just messes with the pointer! So don't do things like that.

Josh

Josh

Leadwerks 3 begins closed beta test

Leadwerks 3 is a new game engine purpose-built for mobile. By building the entire platform on pure native code, Leadwerks aims to bring a new level of performance and flexibility to 3D mobile games.   After two years of development, the team is now beginning a closed beta test. Select members of the community will provide feedback and testing so that final bug fixes and refinements can be made.   You can sign up to our mailing list for up to date information as we finish up development of the new Leadwerks. Visit www.leadwerks.com to learn more.

Admin

Admin

Leadwerks Mailing List

We've created a mailing list so you can stay up to date with the latest happenings. Sign up here and we'll notify you when Leadwerks 3 is ready,

Josh

Josh

Hangout with Leadwerks Software

The Leadwerks team will be hosting our next Google Hangout on Sunday, September 16, at 17:00 GMT (that's 10:00 AM in California). Aggror will talk about his experience leading the Leadwerks Community Project, and we'll provide a sneak peak at the new Leadwerks game engine.   Follow us on our Google+ page before Sunday and check back to join the Hangout. We're limited to ten participants, so first come, first serve. See you then!

Admin

Admin

A Second Date with Leadwerks Software

The Leadwerks team will be hosting our second Google Hangout on Sunday, July 22, at 17:00 GMT (that's 10:00 AM in California). We'll spend 30 minutes talking about all the cool things happening in the community, and answer your questions about our upcoming new game engine.   Follow us on our Google+ page before Sunday and check back to join the Hangout. We're limited to ten participants, so first come, first serve. See you then!

Admin

Admin

Hang Out with Leadwerks

The Leadwerks team will be hosting our first Google Hangout on Sunday, July 1, at 17:00 GMT (that's 10:00 AM in California). We'll spend 30 minutes talking about all the cool things happening in the community, and answer your questions about our upcoming new game engine.   Follow us on our Google+ page before Sunday and check back to join the Hangout. We're limited to ten participants, so first come, first serve. See you then!

Admin

Admin

Leadwerks Software Now Offering Internships

Leadwerks Software is now offering internships through the Center for Entreprenuership at Sacramento State University. Internships are available for programming, 3D art, web development, and marketing.   Programming Internship Assist the development team with tools and core engine design.
Work with game development team to create a sample Leadwerks3D game.
Gain experience working in a professional software development environment.
C++ and Lua experience are a plus but not required.
3D Art Internship Become proficient with the Leadwerks3D design tools.
Provide feedback to the development team to improve the art pipeline.
Assist game development team by producing 3D models, textures, animations, and game levels.
Web Development Internship Work with marketing to enhance our online identity.
Develop social features for our online community of game developers.
Foster online community relations.
Marketing Internship Author promotional materials for website, press releases, and newsletters.
Interact with the development team to communicate technical information to the public.
Enhance and promote our unique company brand.
Spring and summer positions are available now. Interns will work 10-20 hours a week, gaining experience working on a commercial product as part of a professional software development team. Apply at www.leadwerks.com/careers.

Admin

Admin

Leadwerks Levels Up

Leadwerks has been accepted into the Sacramento State University Center for Entrepreneurship. The mission of the Center for Entrepreneurship in the College of Business Administration (CBA) is to develop and nurture innovative business ideas and to capitalize potential entrepreneurial opportunities, both from CSUS and local entrepreneurship communities.   The Center will provide entrepreneurs with the skills and resources needed to launch a venture and to identify and cultivate solutions to entrepreneurial problems, the network structure to bring the plan to fruition, and the technical training to grow the enterprises.   This means Leadwerks now has a physical office right here in California and a vital link to the local technology and business communities as we complete the last leg of Leadwerks3D, our upcoming game development software for iPhone, iPad, Android, Windows, and Mac.

Admin

Admin

Leadwerks Engine 2.5 Update Available

Leadwerks Engine 2.5 has been updated with a few small fixes and added commands. -Added GetModelLODEntity(), CountModelLODEntities(). -Added vegetation index in pick structure. -Improved vegetation terrain coloring. -Fixed terrain color map.   You can download the update by running the Leadwerks Engine sync tool.

Admin

Admin

Leadwerks Software Announces .NET Support

Leadwerks Software has released version 2.5 of their game development software Leadwerks Engine, featuring enhanced graphics and support for the Microsoft .NET application framework. Josh, CEO of Leadwerks said, “.NET support fits in with our goal of making game development simple and more approachable for programmers. We have an energetic community of coders who have been requesting .NET support for some time, and we’re happy to deliver that in Leadwerks Engine 2.5 along with enhancements to our renderer.” Leadwerks Engine lets developers write games in C++, C#, VB.NET, and Lua script. The company seeks to simplify the complicated process of game development by providing a streamlined production pipeline and an intuitive command set. “With traditional game development tools, you've got to choose between ease of use and the quality of your results,” continued Josh, “We don’t see things that way. We believe powerful tools should also be flexible and fun to use, and that’s been our driving philosophy since the first version of Leadwerks Engine was released back in 2006. We’re very excited about extending support to a new audience using the .NET framework. We also support C# programming with Mono, in preparation for our plans to bring great graphics to mobile devices.” Independent game developers are using Leadwerks Engine to deliver games with visuals that can go head-to-head with titles from major studios. Tricubic Studios is using Leadwerks to develop their helicopter flight simulator Combat-Helo. Richard Hawley, Director of Tricubic Studios, said that “Leadwerks gave us a shortcut to achieve the kind of special effects seen in major AAA titles including HDR, motion blur, infrared vision, and dozens of real-time lights for dramatic day or night scenes with no performance penalty. The vegetation system alone can compete with systems costing many times more. We needed an engine that could render hundreds of thousands of trees to convince the player they were flying a lethally efficient helicopter at low level. The performance of Leadwerks has just been amazing.” Leadwerks Engine continues to be priced affordably for independent game developers at $199.99, with a source code license available under a separately negotiated agreement. A fully provisioned 30-day trial version can be downloaded from the Leadwerks website. Founded in 2006, Leadwerks Software provides cutting-edge game development tools at an affordable price. By providing amazing technology that's easy to use, Leadwerks empowers game developers, digital artists, and architects to bring their 3D ideas to reality. With over 10,000 customers worldwide, Leadwerks has earned a loyal customer base and developed proprietary technologies that are now being leveraged to build new products and expand their market to include tablets and smart phones.

Admin

Admin

Leadwerks.com launches new community features

Leadwerks.com now features a video gallery where our members can post movies of their games made with Leadwerks Engine. Instead of slowly uploading a huge video file, you can simply enter a YouTube video ID to submit movies. Check out some of the cool videos like Legos falling over to a techno soundtrack, fly through floating islands in Aerora, and of course there's Dave Lee's excellent Chernobyl Exclusion Zone.   We've also created a random rotating banner image in our website header. Leadwerks developers can now submit their own Leadwerks.com banners and have them appear on our site. -Banner images must be 980x128 pixels in size, in JPG format, with 10% compression (high quality). -Your profile will be linked to from the small box in the upper right corner of the banner. -The title you submit will appear in the URL popup title. -Banners will appear in the rotation after they are approved by the staff. -If we have used one of your gallery images, feel free to resubmit it so you can get it linked to your account, and get full credit.   We hope these new community features give our users even more ways to interact and have fun making games.

Josh

Josh

Leadwerks Engine 2.43 Released

Leadwerks Engine 2.43 is now available. This version features improved raycast performance, a new DRAWEACH entity callback, and a few small bug fixes. Registered developers can download the update by running the Leadwerks Updater.

Admin

Admin

Leadwerks Engine 3 Forums now open

The Leadwerks Engine 3 Forums are open to all Leadwerks developers so you can post your ideas and get information on the development of Leadwerks Engine 3. Additionally, forums are now divided up by product, with forums for Leadwerks Engine 2, Leadwerks Engine 3, and 3D World Studio. We think this organization will provide more room to grow in the future.

Admin

Admin

×