Jump to content
  • Advertisement

Josh Klint

  • Content Count

  • Joined

  • Last visited

Everything posted by Josh Klint

  1. Leadwerks 3.0 was released during GDC 2013. I gave a talk on graphics optimization and also had a booth at the expo. Something else significant happened that week. After the expo closed I walked over to the Oculus booth and they let me try out the first Rift prototype. This was a pivotal time both for us and for the entire game industry. Mobile was on the downswing but there were new technologies emerging that I wanted to take advantage of. Our Kickstarter campaign for Linux support was very successful, reaching over 200% of its goal. This coincided with a successful Greenlight campaign to bring Leadwerks Game Engine to Steam in the newly-launched software section. The following month Valve announced the development of SteamOS, a Linux-based operating system for the Steam Machine game consoles. Because of our work in Linux and our placement in Steam, I was fortunate enough to be in close contact with much of the staff at Valve Software. The Early Days of VR It was during one of my visits to Valve HQ that I was able to try out a prototype of the technology that would go on to become the HTC Vive. In September of 2014 I bought an Oculus Rift DK2 and first started working with VR in Leadwerks. So VR has been something I have worked on in the background for a long time, but I was looking for the right opportunity to really put it to work. In 2016 I felt it was time for a technology refresh, so I wrote a blog about the general direction I wanted to take Leadwerks in. A lot of it centered around VR and performance. I didn't really know exactly how things would work out, but I knew I wanted to do a lot of work with VR. A month later I received a message on this forum inquiring about use of Leadwerks Game Engine for virtual reality applications for NASA projects. Now, Leadwerks Software has a long history of use in the defense and simulation industries, with orders for software from Northrop Grumman, Lockheed Martin, the British Royal Navy, and probably some others I don't know about. So NASA making an inquiry about software isn't too strange. What was strange was that they were very interested in meeting in person. Trip to Goddard Space Center I took my first trip to Goddard Space Center in January 2017 where I got a tour of the facility. I saw robots, giant satellites, rockets, and some crazy laser rooms that looked like a Half-Life level. It was my eleven year old self's dream come true. I was also shown some of the virtual reality work they are using Leadwerks Game Engine for. Basically, they were taking high-poly engineering models from CAD software and putting them into a real-time visualization in VR. There are some good reasons for this. VR gives you a stereoscopic view of objects that is far superior to a flat 2D screen. This makes a huge difference when you are viewing complex mechanical objects and planning robotic movements. You just can't see things on a flat screen the same way you can see them in VR. It's like the difference between looking at a photograph of an object versus holding it in your hands. CAD models are procedural, meaning they have a precise mathematical formula that describes their shape. In order to render them in real-time, they have to be converted to polygonal models, but these objects can be tens of millions of polygons, with details down to threading on individual screws, and they were trying to view them in VR at 90 frames per second! Now with virtual reality, if there is a discrepancy between what your visual system and your vestibular system perceives, you will get sick to your stomach. That's why it's critical to maintain a steady 90 Hz frame rate. The engineers at NASA told me they first tried to use Unity3D but it was too slow, which is why they came to me. Leadwerks was giving them better performance, but it still was not fast enough for what they wanted to do next. I thought "these guys are crazy, it cannot be done". Then I remembered something else people said could never be done. So I started to think "if it were possible, how would I do it?" They had also expressed interest in an inverse kinematics simulation, so I put together this robotic arm control demo in a few days, just to show what could be easily be done with our physics system. With the extreme performance demands of VR and my experience writing optimized rendering systems, I saw an opportunity to focus our development on something people can't live without: speed. I started building a new renderer designed specifically around the way modern PC hardware works. At first I expected to see performance increases of 2-3x. Instead what we are seeing are 10-40x performance increases under heavy loads. During this time I stayed in contact with people at NASA and kept them up to date on the capabilities of the new technology. At this point there was still nothing concrete to show for my efforts. NASA purchased some licenses for the Enterprise edition of Leadwerks Game Engine, but the demos I made were free of charge and I was paying my own travel expenses. The cost of plane tickets and hotels adds up quickly, and there was no guarantee any of this would work out. I did not want to publicly talk about what I was doing because it would be embarrassing if I made a lot of big plans and nothing came of it. But I saw a need for the technology I created and I figured something would work out, so I kept working away at it. Call to Duty Today I am pleased to announce I have signed a contract to put our virtual reality expertise to work for NASA. As we speak, I am preparing to travel to Washington D.C. to begin the project. In the future I plan to provide services for aerospace, defense, manufacturing, and serious games, using our new technology to deliver VR simulations with performance and realism beyond anything that has been possible until now. My software company and relationship with my customers is unaffected. Development of the new engine will continue, with a strong emphasis on hyper-realism and performance. I think this is a direction everyone here will be happy with. I am going to continue to invest in the development of groundbreaking new features that will help in the aerospace and defense industries (now you understand why I have been talking about 64-bit worlds) and I think a great many people will be happy to come along for the ride in this direction. Leadwerks is still a game company, but our core focus is on enabling and creating hyper-realistic VR simulations. I want to thank our user base for your support and all the suggestions and ideas you have provided over the years that have helped me create great software for you. Things are about to get very interesting. I can't wait to see what our community creates with Leadwerks Game Engine and future technologies we develop.
  2. Josh Klint

    Leadwerks Software to Provide VR Services to NASA

    Thanks for the kind words. The best is yet to come!
  3. Today we are pleased to announce the release of Leadwerks Game Engine 4.5. Version 4.5 introduces support for VR headsets including the HTC Vive, Oculus Rift, and all OSVR-based hardware, allowing developers to create both room-scale and seated VR experiences. The Leadwerks virtual reality command set is robust yet incredibly simple allowing you to easily convert your existing 3D games into VR titles. To help get you started the source code for our Asteroids3D game has been updated for VR and is now freely available in the Leadwerks Games Showcase. Leadwerks Game Engine is uniquely well-suited for VR because of its fast performance, ease of use, and the availability of C++ programming for demanding VR games. Several optimizations for VR have been made including combining the rendering of both eyes into a single culling step. The stability and accuracy of Newton Game Dynamics means we can have in-depth physics interactions in VR. A new VR game template has been added to provide common VR features including teleportation locomotion and the ability to pick up and interact with objects in the environment. Visual Studio 2017 We've also upgraded Leadwerks Professional Edition to build with Visual Studio 2017 so you can take advantage of the very latest Visual Studio features. Instructions for upgrading C++ projects from version 4.4 to 4.5 are available here. Other Improvements Added fog settings in editor and into map file format. New joint scripts and enhancements. Updated to Steamworks 1.41 You can pick up Leadwerks Game Engine with a discount during the Steam Winter Sale. About Leadwerks Software Leadwerks Software was founded in 2006 to make game development easy and fun. The company launched Leadwerks Game Engine on Steam in January 2014 and has experienced steady growth, now with over 20,000 paid users. Leadwerks Game Launcher was released as an early access title in September 2015, allowing developers to publish games to Steam Workshop with no submission fee.
  4. Today we are pleased to announce the release of Leadwerks Game Engine 4.5. Version 4.5 introduces support for VR headsets including the HTC Vive, Oculus Rift, and all OSVR-based hardware, allowing developers to create both room-scale and seated VR experiences. The Leadwerks virtual reality command set is robust yet incredibly simple allowing you to easily convert your existing 3D games into VR titles. To help get you started the source code for our Asteroids3D game has been updated for VR and is now freely available in the Leadwerks Games Showcase. Leadwerks Game Engine is uniquely well-suited for VR because of its fast performance, ease of use, and the availability of C++ programming for demanding VR games. Several optimizations for VR have been made including combining the rendering of both eyes into a single culling step. The stability and accuracy of Newton Game Dynamics means we can have in-depth physics interactions in VR. A new VR game template has been added to provide common VR features including teleportation locomotion and the ability to pick up and interact with objects in the environment. Visual Studio 2017 We've also upgraded Leadwerks Professional Edition to build with Visual Studio 2017 so you can take advantage of the very latest Visual Studio features. Instructions for upgrading C++ projects from version 4.4 to 4.5 are available here. Other Improvements Added fog settings in editor and into map file format. New joint scripts and enhancements. Updated to Steamworks 1.41 You can pick up Leadwerks Game Engine with a discount during the Steam Winter Sale. About Leadwerks Software Leadwerks Software was founded in 2006 to make game development easy and fun. The company launched Leadwerks Game Engine on Steam in January 2014 and has experienced steady growth, now with over 20,000 paid users. Leadwerks Game Launcher was released as an early access title in September 2015, allowing developers to publish games to Steam Workshop with no submission fee. View full story
  5. I'm building the VR project template for Leadwerks 4.5. Although you can enable VR in any project, this template is specifically designed to provide some of your most common room-scale VR features: Teleportation movement, which prevents motion sickness. Picking up and throwing objects. (It's actually really fun!) To start with I am creating the art assets for the teleport effect. This is basically what I want: Your controller shoots a beam which ends in an indicator when it hits an upwards-facing slope. Typically this beam will be somewhat arced. Why the curve? This allows you to climb up to areas above you: As always, I am starting with the game assets. I don't believe in using programmer art because it hurts your understanding of what you are trying to create, it's uninspiring, and you will end up writing your code twice once you get the final artwork and realize all the mistakes you made. I started with textures. I know I want a circular indicator on the floor, a misty spinning effect rising off it, and a beam. I'm going to make all my textures grayscale so that I can control the color with the entity color value and dynamically change it in the game. Here are my textures I created in about ten minutes in Paint Shop Pro: The first texture above is clamped along the X and Y axes and the second one is clamp along the Y axis. I am using uncompressed textures for all of these because they have a lot of soft gradients. I created my materials with the following settings, again leaving everything white: In 3ds Max I created my indicator model. It's just a plane with a cylinder on top, with the end caps removed: When I import it into Leadwerks and apply my materials, the model looks like this: I'll show you why I am using uncompressed textures. You can see in this shot the edge of the ring has some ugly artifacts when texture compression is used: Here's a closeup. Not something I want to see in VR: Now I am going to create an instance of the model in the editor and adjust the color. I want a bright blue glowy color. I am setting the color to RGB 128,255,255 and cranking the intensity way up to 2.0. This effectively sets the entity color to 256,512,512. This color is multiplied by the texture color at each pixel and then clamped to 0-255 (the maximum color range of the monitor). That means that the brightest spots on the material will reach a full 255,255,255 white color and look really intense, while darker parts will be tinted blue: Notice the object isn't just a flat color, but has a range of color from blue to white. To get this effect I had to increase the intensity over 1.0 to create colors brighter than RGB 255,255,255, and I had to have some red in the color. If I had set the color to RGB 0,255,255 the red channel would never increase and I would have a flat color like this. Not so good: If I had set the color to RGB 128,255,255 but left the intensity at 1.0 I would also have a solid color: Finally I added a script to the model and saved it as a prefab. The script just rotates the model around slowly on its Y axis, which I think will look pretty good. I'm going to perform the rotation in the Draw() function so it doesn't get called if the object is hidden or offscreen, and I don't think anyone will notice if the rotation doesn't update when they look away: function Script:Draw() self.entity:Turn(0, 0.1 * Time:GetSpeed(), 0) end That's it for now. The next step will be to create my teleportation mechanic in VR.
  6. Now that the Kickstarter rewards are shipped from my campaign to bring Leadwerks to Linux, I'm getting distribution channels set up. Today Leadwerks Game Engine launched in the Ubuntu Software Center. This is a big deal for two reasons: Linux users now have first-class rapid game development tools written natively for Linux. We're bringing more games to Linux, like Rogue System. You can check out a demo of Leadwerks on our site.
  7. [color=rgb(0,0,0)][font=arial]Previously, [/font][/color]I described[color=rgb(0,0,0)][font=arial] the goals and philosophy that were guiding my design of our implementation of the Leadwerks Workshop on Steam. To review, the goals were:[/font][/color] [color=rgb(0,0,0)][font=arial]1. Frictionless sharing of items within the community.[/font][/color] [color=rgb(0,0,0)][font=arial]2. Protection of intellectual property rights.[/font][/color] [color=rgb(0,0,0)][font=arial]3. Tracking of the chain-of-authorship and support for derivative works.[/font][/color] [color=rgb(0,0,0)][font=arial]In this update I will talk more specifically about how our implementation meets these goals.[/font][/color] [color=rgb(0,0,0)][font=arial]Our implementation of the Steam Workshop allows Leadwerks developers to publish game assets directly to Steam. A Workshop item is typically a pack of similar files, like a model or texture pack, rather than single files:[/font][/color] [color=rgb(0,0,0)][font=arial]To add an item to Leadwerks, simply hit the "Subscribe" button in Steam and the item will become available in a new section of the asset browser:[/font][/color] [color=rgb(0,0,0)][font=arial]You can drag Workshop files into your scene and use them, just like a regular file. However, the user never needs to worry about managing these files; All subscribed items are available in the editor, no matter what project you are working on. When a file is used in a map or applied to a model, a unique global ID for that file is saved, rather than a file path. This allows the item author to continue updating and improving the file without ever having to re-download files, extract zip archives, or any other mess. Effectively, we are bringing the convenience of Steam's updating system to our community, so that you can work together more effectively. Here's one of the tutorial maps using materials from a sci-fi texture pack from the Workshop. When the map is saved, the unique file IDs are stored so I can share the map with others.[/font][/color] [color=rgb(0,0,0)][font=arial]Publishing your own Workshop packages is easy. A built-in dialog allows you to set a title, description, and a preview image. You can add additional images and even videos to your item in Steam:[/font][/color] [color=rgb(0,0,0)][font=arial]Leadwerks even has support for derivative works. You can create a model, prefab, or map that uses another Workshop file and publish it to Steam. Since Leadwerks tracks the original ID of any Workshop items you used, they will always be pulled from the original source. This allows an entirely new level of content authors to add value to items downstream from their origin, in a way similar to how Linux distributions have grown and evolved. For example, maybe you don't have the artistic skill to make every single texture you need for a house, but you can put together a pretty nice house model and pant it with another user's textures. You can then upload that model right back to the Workshop, without "ripping off" the texture artist; their original package will still be needed to load the textures. It's perfectly fine to change the name of your Workshop package at any time, and you never need to worry about your file names conflicting with files in other packages. (If you decide you want to change a lot of file names, it's best to just create a new package so that you don't interrupt the work of users "downstream" from you,)[/font][/color] [color=rgb(0,0,0)][font=arial]Uninstalling a Workshop package just requires you to hit the "unsubscribe" button on the item's page in the Steam Workshop. No more hunting around for stray zip files! You can easily check out other users' work, use whatever you like, and unsubscribe from the packages you don't like, with no mess at all.[/font][/color] How Do I Get It? [color=rgb(0,0,0)][font=arial]The Leadwerks Workshop beta begins today. You must be a member of the [/font][/color]Leadwerks Developer group on Steam[color=rgb(0,0,0)][font=arial] to access the Workshop. A limited number of beta invites are being sent out. Once the system is completely polished, we will make it available to the entire Leadwerks community.[/font][/color]
  8. Leadwerks Software at Steam Dev Days: http://www.youtube.com/watch?v=hOCl8-_mSUA#t=07m10s #linux #steamos #steamdevdays #ubuntu
  9. [color=rgb(11,25,2)][font='Helvetica Neue'] I'm happy to say that Leadwerks now supports the entire process of making games natively on Linux. Let's take a quick tour through the process.[/font][/color][color=rgb(11,25,2)][font='Helvetica Neue'] First, we create a new project in the project wizard. The project wizard will detect project templates (you can make your own) and let you make a game based on Lua script, or on a combination of C++ and script:[/font][/color][color=rgb(11,25,2)][font='Helvetica Neue'] [/font][/color][color=rgb(11,25,2)][font='Helvetica Neue'] Step two is to make your game. Fortunately, you've got everything you need built into a single integrated editor, including script and shader debugging, automatic asset reloading, and built-in level design tools:[/font][/color][color=rgb(11,25,2)][font='Helvetica Neue'] [/font][/color][color=rgb(11,25,2)][font='Helvetica Neue'] Once you have something you want to share, the project publisher will copy all required files into an export directory. Future feature idea: Add a call to a command-line tool to pack up .deb packages. Or better yet, allow any arbitrary executable to be run at the end of the publishing process.[/font][/color][color=rgb(11,25,2)][font='Helvetica Neue'] [/font][/color][color=rgb(11,25,2)][font='Helvetica Neue'] I have some more testing to do before release, but things are looking good![/font][/color]
  10. [color=rgb(11,25,2)][font=arial]Following my previous update about correcting file path cases, I am now able to load all our maps in Leadwerks. The power of this tool running natively on Linux is starting to show, if I do say so myself:[/font][/color] [color=rgb(11,25,2)][font=arial][/font][/color] [color=rgb(11,25,2)][font=arial]The next step is to implement a file system watcher to detect file changes. Leadwerks automatically monitors the current project directory, and will reload assets whenever the file changes. This allows you to keep an image open in an image editor like GIMP, and any time you save your changes will be reflected inside Leadwerks. It's a great workflow for artists and just the kind of feature I wanted to bring to Linux with this project.[/font][/color] [color=rgb(11,25,2)][font=arial]Linux has a built-in file system watcher class called "inotify". Interestingly, this class was added to Linux in 2005, the same year the iPod was released, but there appears to be no connection. The "i" in "inotify" stands for "inode". Dennis Ritchie explains:[/font][/color] [color=rgb(11,25,2)][font=arial]In truth, I don't know either. It was just a term that we started to use. "Index" is my best guess, because of the slightly unusual file system structure that stored the access information of files as a flat array on the disk, with all the hierarchical directory information living aside from this. Thus the i-number is an index in this array, the i-node is the selected element of the array. (The "i-" notation was used in the 1st edition manual; its hyphen was gradually dropped.)[/font][/color] [color=rgb(11,25,2)][font=arial]The inotify system is pretty straightforward to implement, with a procedural C interface. One thing that tripped me up was an odd layout of the inotify_event structure. It actually has a char pointer built into the structure, so technically the structure does not have a determined length. I don't believe I have ever encountered this design before, but I also am usually dealing with std::string classes.[/font][/color] [color=rgb(11,25,2)][font=arial]One drawback of inotify is that it isn't recursive. While searching for information on the design, I came across this post by Robert Love, one of the two guys who wrote it (the other being John McCutchan). I disagree with his rational for omitting recursion; just because the performance is not as optimal as he would like does not mean the end user's tastes and preferences will change. I can't imagine a scenario when you wouldn't want the system to work recursively, or at least have the option to. In any case, implementing a recursive watch system was fairly easy. The entire file watch system from zero to finished only took about half a day. So we can mark this as one of the features where I overestimated the time and complexity of implementation.[/font][/color] [color=rgb(11,25,2)][font=arial]File creation, deletion, and modify events are now firing reliably so I am going to plug this code into the editor and start testing it out. Because the editor already works reliably on other Windows and OSX, I don't anticipate any problems. I do not have a firm release date yet, but as you can surmise, we are nearing completion of Leadwerks for Linux.[/font][/color]
  11. Josh Klint

    Linux Development Update

    With all the excitement of the Steam release and Steam Dev Days behind me, I have literally nothing else to work on but Linux and small bug fixes for the Steam users. Together with the recent solution of two long outstanding problems, the pace of development is picking up, and you can expect more frequent updates from me. I started investigating the right-hand side panel. This contains four tabbed panels filled with various tools the editor uses. I noticed the bottom of the window was being hidden behind some mystery panel I didn't recognize. I added a function that colored the entire interface random colors every frame, which led to this amusing screenshot. Yes, this is actually a real development screenshot of Leadwerks for Linux. Coloring the panels didn't reveal anything to me, but after looking through my code I soon found the culprit: a tabber widget had been created on the main window and forgotten, and it just didn't show up in front in the Windows version. So I put it out of its misery and everything was better. The asset browser allows you to view all files in your Leadwerks projects. With recursive and search options, it can be used to quickly find any file or group of files. This had some miscellaneous problems with event handling I fixed. Default fonts on Ubuntu are quite large compared to Windows and Mac, and this requires some reworking of UI elements. However, I haven't run into any places yet where this requires a significant redesign. I found that button images work best when the button is given a padding of 6 pixels. In other words, the button size minus 12 is how big the image should be. With this part of the editor working nicely, it's starting to feel like a real application. Having an advanced tool like this that can run natively in Linux is pretty intriguing because it means being free from Windows and doing the kinds of things I want to do on Linux. So we're one step closer to delivering on the promise of this campaign. Stay tuned.
  12. [color=rgb(0,0,0)][font=arial]Leadwerks 3.1 has entered the beta testing phase on schedule according to our development plan laid out in the [/font][/color]Leadwerks for Linux[color=rgb(0,0,0)][font=arial] Kickstarter campaign. Supporters who chose the SUPER BACKER reward have been granted access to try the early builds of Leadwerks for Linux.[/font][/color] [color=rgb(0,0,0)][font=arial]We chose to use the excellent Code::Blocks IDE for Linux development. Beta testers can access the full [/font][/color]Leadwerks API[color=rgb(0,0,0)][font=arial] to program graphics, physics, and gameplay, along with a few new functions like Camera::SetMultisampleMode(), which sets the render antialiasing level.[/font][/color] [color=rgb(0,0,0)][font=arial]Although the beta is not a complete finished product, we've already learned a lot about building high-end graphics for Linux. First of all, the Linux OpenGL drivers for ATI and Nvidia hardware are fine. We've encountered no graphics drivers bugs (so far). This may be due to the streamlined nature of OpenGL 4, as it removes a lot of legacy functionality. Whatever the cause, OpenGL drivers for Linux work great, much better than Windows drivers did a few years ago in the dark days between OpenGL 2 and 3.[/font][/color] [color=rgb(0,0,0)][font=arial]The biggest remaining challenge is to get the editor running in Linux. We anticipate two difficult parts to this. First, although we have a GUI abstraction layer that uses GTK on Linux, we expect some amount of fiddling to be necessary to make it work right. Second, the case-sensitive nature of the Linux file system will cause issues that need to be dealt with since there are many placed where our editor stores file names in lower-case format. This will require a lot of effort to resolve, but it's not any harder than some of the other issues we have dealt with so far in the development of Leadwerks for Linux. The benefits of having a Linux game editor with a native look and feel will make it worth the extra effort it takes.[/font][/color] Steam Dev Days [color=rgb(0,0,0)][font=arial]Leadwerks founder [/font][/color]Josh Klint[color=rgb(0,0,0)][font=arial] has been invited and will be attending [/font][/color]Steam Dev Days[color=rgb(0,0,0)][font=arial] in Seattle, Washington. Steam Dev Days is a two-day game developer's conference where professionals can meet in a relaxed, off the record environment. Developers will share their design and industry expertise, participate in roundtable discussions and attend lectures by industry veterans on topics ranging from game economies to VR, Linux/OpenGL, user-generated content and more. Developers will also have direct access to Valve's Steam Team, and will be given a chance to test-drive and provide feedback on Steam OS, prototype Steam Machines and Steam Controllers.[/font][/color]
  13. Josh Klint

    Leadwerks 3.1 Enters Beta; Heading to Steam Dev Days

    I would have used QT, but they don't make a library I can easily plug in; it's a whole framework that requires a certain code structure.  So that was out of the question.  Even if I were using QT for the GUI, I dislike visual GUI design tools.   QTCreator actually looks pretty nice, and I might switch over to it, just for the C++ programming not a visual designer.
  14. [color=#000000][font=arial]A new update for Leadwerks has been posted which adds new features that allow users to use Steam features.[/font][/color] [color=#000000][font=arial]S[/font][/color]teamworks Integration [color=#000000][font=arial]Leadwerks now has native support for the Steamworks SDK. You can make your game ready to publish on Steam by calling Steamworks:Initialize(). This also enables the in-game overlay so you can take screenshots, chat with friends, and access the entire Steam community in-game.[/font][/color] Screenshot Publishing [color=#000000][font=arial]The new screenshot publishing window allows you to upload rendered images directly to your online screenshots library, where it will show up on your Steam profile and the Leadwerks community hub. [/font][/color] Steam Controller [color=#000000][font=arial]We've added native support for the new SteamOS Controller. You can get input from the controller and even send haptic feedback back to the device. [/font][/color] [color=#000000][font=arial]You can learn more about these new features in the documentation [/font][/color]here[color=#000000][font=arial].[/font][/color]
  15. Josh Klint

    Leadwerks is on Steam

    I think you should try them all and choose what suits you best.
  16. Josh Klint

    Leadwerks is on Steam

    Well, I finally got Leadwerks onto Steam with an "indie edition" focused on Lua. The response has been quite good. It's pretty surprising to see it in the top ranking place for software, and on the front page of Steam, especially right now when there is so much interest in Valve. I guess January is a great time to put news out! If you want the whole razzle-dazzle news story, you can read it here: Leadwerks Game Engine Arrives on Steam, Turns Players into Makers Next week, I head up to Steam Dev Days. I have resolved to either come back with a SteamOS controller or Gabe Newell's beard. Thanks to everyone who voted for it on Greenlight!
  17. Josh Klint

    Steam Launch Recap and Steam Dev Days

    Our standard edition is actually all based around C++11 and will be available on Steam soon.  I just felt it was easier to start distribution with something simpler, get the problems worked out, and then add the C++ project templates.  This allows access to the full API with the same class structure as what Lua is using.
  18. [color=rgb(18,26,13)][font='Helvetica Neue'][color=rgb(11,25,2)]On Monday, Leadwerks Game Engine: Indie Edition was finally launched on Steam. Before the Kickstarter campaign there was a Greenlight campaign to put Leadwerks on Steam, which it got through in just 27 days. Based on the success of the Kickstarter campaign, I decided to delay the Steam launch and try to get Linux done in time. However, there was one serious deadline I could not miss, and that was the Steam Dev Days conference next week. I knew we needed to have an actual product on Steam by then, and not be stuck in Greenlight limbo, so I went ahead and put what we had up, which is Windows-only. Steam keys were sent out to all Kickstarter backers who chose a software reward.[/color][/font][/color] [color=rgb(18,26,13)][font='Helvetica Neue'][color=rgb(11,25,2)]The launch went remarkably smoothly. Due to the limitations of the product (one OS, Lua-only) it made testing and updates much easier than if we tried to do a multi-platform launch all at once. There have been two patches, one to fix compatibility with Nvidia Optimus laptops, and the other to fix a few miscellaneous problems that didn't come up during beta testing.[/color][/font][/color] [color=rgb(18,26,13)][font='Helvetica Neue'][color=rgb(11,25,2)]The response from the early users, and from those of you who have tried it on Windows, has been very good. We seem to have hit the right formula with our combination of BSP brushes, navmeshes, Lua, and the flowgraph system. User engagement is high and I can tell that people "get it". We're starting to see content trickle out on Steam, and I can tell already this year is going to bring some really cool projects made by Leadwerks users. The decision to build a friendly workflow and focus on enabling user-generated content was a good one, as we are already seeing some impressive stuff come out, after only a few days, like this high-res tessellated material from "Shadmar":[/color][/font][/color] [color=rgb(18,26,13)][font='Helvetica Neue'][color=rgb(11,25,2)][/color][/font][/color] [color=rgb(18,26,13)][font='Helvetica Neue'][color=rgb(11,25,2)]Now that you have a more concrete idea of what we're building, I hope you are more excited than ever to have this running natively in Linux. I am returning my full attention to Linux development now. There's nothing else I need to work on but this, and I am determined to have Leadwerks, editor and all, running natively in Linux no matter what it takes. Steam Dev Days[/color][/font][/color] [color=rgb(18,26,13)][font='Helvetica Neue'][color=rgb(11,25,2)]Next week I head up to Seattle to attend Steam Dev Days for two days. I'm not giving any lectures or doing promotion, so it will be a relaxed trip with no prep work. This is going to be Valve's conference for the Linux-based SteamOS. SteamOS is an open console operating system. 13 hardware manufacturers showed off their "Steam Machine" consoles at the Consumer Electronics Show last week.[/color][/font][/color] [color=rgb(18,26,13)][font='Helvetica Neue'][color=rgb(11,25,2)]My personal favorite is the Scan NC10: Leadwerks (the engine) will reportedly run on these machines right now with no changes. I'll learn more next week at the conference and share what information I can with you. Can Linux Take Over the Living Room in 2014? I'm going to go ahead and call it now: Linux is going to take over the living room in 2014. Why?[/color][/font][/color] [color=rgb(18,26,13)][font='Helvetica Neue'][color=rgb(11,25,2)]Compatibility: Steam Machines are backwards-compatible. You can play your old games forever.[/color][/font][/color] [color=rgb(18,26,13)][font='Helvetica Neue'][color=rgb(11,25,2)]Market Segmentation: Steam Machines will eat the market from both ends. There will be extreme high-end models as well as inexpensive compact models.[/color][/font][/color] [color=rgb(18,26,13)][font='Helvetica Neue'][color=rgb(11,25,2)]Visibility: Traditional consoles get a big launch every seven years. Steam Machines will have continued releases, probably on an annual basis like cell phones.[/color][/font][/color] [color=rgb(18,26,13)][font='Helvetica Neue'][color=rgb(11,25,2)]You can watch the man himself, Gabe Newell, talking about it here:[/color][/font][/color] [color=rgb(18,26,13)][font='Helvetica Neue'][color=rgb(11,25,2)]Again, I would like to thank everyone who backed our Kickstarter project and had the foresight to realize Linux gaming was about to explode.[/color][/font][/color]
  19. Josh Klint

    Leadwerks is on Steam

    Yes, there's a good reason the whole game industry uses C++.  That's why it's at the foundation of our engine, although I can see how you would miss that since we just have the indie edition on Steam right now: http://www.leadwerks.com/werkspace/page/programming?showbanner=0   You can access the whole API directly with modern C++11.  This has a few major benefits I'm sure you're aware of: Easy integration of third party libraries, virtually all of which are written in C++. Superior performance. Access to everything, whereas other languages always give you a subset they think is all you need.
  20. I'm having trouble tracking down any information on ATI/Intel switchable graphics. On Nvidia/Intel combos, I just have to extern a variable to indicate the application should use the discrete GPU: Code : extern "C" { _declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001; } How is this supposed to be done on ATI/Intel combos? I have consulted the Google and found nothing.  This is using OpenGL on Windows, if that matters.
  21. Josh Klint

    Leadwerks is on Steam

  22. [color=rgb(0,0,0)][font=arial]Leadwerks 3.1 is nearly ready for release! In Leadwerks 3.0, we focused on making a solid cross-platform art pipeline and editor. In 3.1 we're adding graphics that go above and beyond the capabilities of Leadwerks 2.[/font][/color] New Features in 3.1 OpenGL 4.0 deferred renderer with up to 32x hardware MSAA. Geometry and tessellation shaders. Support for the Linux operating system, for both the engine AND editor. [color=rgb(0,0,0)][font=arial][/font][/color] [color=rgb(0,0,0)][font=arial]Leadwerks 3.1 is now available for pre-ordering in the Leadwerks store. Existing 3.0 customers can pre-order the upgrade to 3.1 for $99. New customers can pre-order Leadwerks 3.1 for $199. Order before January 6 and get the Indie Edition on Steam for free. The upgrade to an OpenGL 4 deferred renderer is a big step. To make the process smoother and put Leadwerks in your hands sooner, we're rolling Leadwerks 3.1 out in stages. "Leadwerks: Indie Edition" will be launched on Steam January 6th. This will be on Windows only, with support for Lua scripting. The following groups will receive a free Steam key to add this product to their Steam account:[/font][/color] Leadwerks 3.0 customers who pre-order the upgrade to version 3.1. New customers who pre-order Leadwerks 3.1. All Kickstarter backers who backed Leadwerks for Linux for $49 or more. (Even if you don't run Windows, hold onto this as the Linux version on Steam will have special features.) [color=rgb(0,0,0)][font=arial]Leadwerks 3.1 for Linux and Windows will be released together next, with the exact release date to be determined. Leadwerks 3.1 for Mac will follow this, with mobile add-ons for iOS and Android coming last. (There is no upgrade purchase necessary for the mobile upgrades for Leadwerks 3.1.)[/font][/color] [color=rgb(0,0,0)][font=arial]Exemptions[/font][/color] Leadwerks 3.1 beta testers will receive the 3.1 upgrade for free. Leadwerks 3.0 customers who backed the Leadwerks for Linux Kickstarter project for $99 or more will receive the 3.1 upgrade for free. [color=rgb(0,0,0)][font=arial]Leadwerks 3.1 is a very strong product, with great graphics and a fantastic art pipeline. I'd like to thank all the users, both old and new, who offered their input on product design and the direction of the company. I can't wait to see what the community does with Leadwerks 3.1.[/font][/color]
  23. Josh Klint

    Leadwerks 3.1

    [color=rgb(0,0,0)][font=arial]It's December, which means Leadwerks for Linux is nearly here! Last week I had to get into more depth with our tutorials. We're creating a series of maps that demonstrate simple game mechanics. The goal is to show how to set up game interactions by attaching scripts to objects and connecting them in the flowgraph editor, without getting into any actual programming. These lessons center around a first-person shooter, but are applicable to many types of games.[/font][/color] [color=rgb(0,0,0)][font=arial]I had to get my hands dirty in the lessons another programmer was developing because there were a few bugs preventing them from working right. As we started getting into some more advanced interactions and physics we found some things that had to be fixed. Most of this revolved around the character controller physics and all the different situations the player can encounter. It's now working correctly, and we will be able to demonstrate some fun physics puzzles you can set up in the editor.[/font][/color] [color=rgb(0,0,0)][font=arial]There's just a few more steps to getting Leadwerks for Linux out. The new tutorials need to be written and recorded, which is actually the easy part. The final lesson needs a full mini-level designed. I'm still having trouble with the GTK UI, but it's the kind of thing that I just need to keep plugging away at. Since the Nvidia and ATI drivers for Linux work flawlessly, we aren't dependent on any third parties fixing their code, which is a big relief.[/font][/color] [color=rgb(0,0,0)][font=arial]Before Kickstarter, we ran a Greenlight campaign to put Leadwerks on Steam. Originally, this was going to be released last summer, but I decided to focus on Linux development and release them around the same time. Leadwerks for Steam is a more limited version of what the Kickstarter backers are getting, and will initially only be available for Windows.[/font][/color] Building FPS Mechanics [color=rgb(0,0,0)][font=arial]Getting into the lessons was fun for me because I got to work on some gameplay design. When building a game, it's important to decide what to focus on. There are an infinite number of ways you can waste your time, so it's critical that you decide what is important and focus on that. We could have implemented an endless number of little interactions in our gameplay lessons, and it's easy to do with our flow graph system, but I decided I wanted to focus primarily on the basic combat and feel of the player. There's a big difference between a demo where you walk around in a game level holding a gun, and a first-person shooter that feels like you are interacting with the game. I wanted to capture that feeling of being in the game, because it will benefit all the derivative games and demos for Linux that are built off of this. With that in mind, I set out to analyze exactly what it is that makes a first-person shooter feel interactive.[/font][/color] Player Movement [color=rgb(0,0,0)][font=arial]The first basic thing you can do to enhance the player experience is add footstep sounds. Don't use just any footsteps. if they don't sound good, it won't feel right. IndieGameModels.com happened to release a pack of footstep noises that are excellent. I negotiated a special license for some of the sounds and will include them in Leadwerks 3.1, free for use. One subtle thing I learned from Valve games is that it's better to play the "landing" sound when the player jumps, not when they land. It gives a much better feeling of interaction with the level, for some reason.[/font][/color] [color=rgb(0,0,0)][font=arial]A very slight camera bob was added so that when you jump, it feels like your arms have inertia. I also tried smoothing the rotation of the arms so they lag a little as you look around, but it looked terrible and they were jumping around on the screen. So while a little inertia can be a subtle indicator of motion, too much is definitely not good.[/font][/color] Ballistics [color=rgb(0,0,0)][font=arial]How do you really tell when a gun is being fired? What makes it "feel" right? I had to look at some games from the all-time masters of first-person combat, id Software. I added a muzzle flash sprite that appears for a fraction of a second when you fire, as well as a point light at the tip of the barrel. The deferred renderer in Leadwerks 3.1 makes the light cast dynamic shadows, giving a convincing feeling of space and depth.[/font][/color] [color=rgb(0,0,0)][font=arial]When a bullet strikes a wall or other surface, you need some visual cue of what happened. A set up two emitters that get copied and played with a one-shot animation whenever a bullet collides with something. One emitter throws off solid chunks with a high gravity value, while the other is a software smoke that slowly emits from the point of impact. A secondary blood effect was created for when living objects are shot.[/font][/color] Combat [color=rgb(0,0,0)][font=arial]When i initially implemented combat with our crawler character (the new AI navigation system makes this great!) I found the action to be...strange. I had a pistol with unlimited ammo and no reloads, and taking down a pack of crawlers was extremely easy. I assumed I had just not given them enough health, or made the bullets too powerful, and just kept working on it. It wasn't until I added two other aspects of gameplay that I realized how big of an influence they have on the game mechanics.[/font][/color] [color=rgb(0,0,0)][font=arial][/font][/color] [color=rgb(0,0,0)][font=arial]Reloading your weapon doesn't just give you a feeling of "realism". It actually introduces a whole new aspect of gameplay. Not only do you have to ration your ammo, but you have to ration your clip and not fire too many shots too quickly. Once you get surrounded by a pack of crawlers and you are trying to reload your weapon to get another shot off, you can quickly get taken down. So the speed of reloading and size of the clip actually become critical design decisions on what kind of game you want.[/font][/color] [color=rgb(0,0,0)][font=arial]The second thing I added was making the camera bounce around when hit. When a crawler slaps you, the camera will be pushed off to the side. You can see this in Doom 3 when the player gets hit by a monster. I found this enhancement has two effects:[/font][/color] [color=rgb(0,0,0)][font=arial]First, it's unpleasant. Having your view suddenly disoriented is a jarring feeling that comes through the game to effect you in real life. It's almost as good as the pain vest I see someone besides me also had the idea for. When you have the possibility of an unpleasant experience, it makes you afraid, and changes the way you play and makes enemies feel much more menacing.[/font][/color] [color=rgb(0,0,0)][font=arial]Second, it adds a new gameplay mechanic. Getting slapped around makes it harder to aim. If you get surrounded by a pack of enemies, it gets very difficult to hit anything. So not letting them get near you becomes very important.[/font][/color] [color=rgb(0,0,0)][font=arial]I think that by focusing on these core elements and providing a structure Linux game developers can build on, we can foster development of a great many derivative projects that make use of these mechanics. The fact that it's happening on Linux is exciting, because it feels like we are doing something truly new, almost like the early days of first-person shooters.[/font][/color] [color=rgb(0,0,0)][font=arial]It's hard to predict the exact release date of Leadwerks for Linux, but we're getting close. My original estimate for the development timeline turned out to be pretty accurate on almost everything. Stay tuned![/font][/color]
  24. [color=rgb(0,0,0)][font=arial]Compiling Leadwerks for Linux using the Code::Blocks IDE wasn't very hard. I particularly like the way Code::Blocks handles files in projects. Instead of creating your own "fake" file system in the project explorer, you just add the folder or files you want, and they are organized in a hierarchy that matches the file system.[/font][/color] [color=rgb(0,0,0)][font=arial]I found the X windowing system to be extremely easy to work with. I've implemented windowed OpenGL contexts on Windows, OSX, iOS, and Android, and Linux was by far the most straightforward and simple.[/font][/color] [color=rgb(0,0,0)][font=arial]One problem I ran into was that some Leadwerks classes conflict with Linux classes. Our Windows, Font, and Time classes match other classes in the Linux headers. I got around this by prefixing the classes with the "Leadwerks::" namespace, but some better solution should be found.[/font][/color] [color=rgb(0,0,0)][font=arial]Upon my first attempt to run Leadwerks, all I got was a blue screen. I fell back from OpenGL 4 to OpenGL 2 and started playing with the OpenGL matrix commands (a relic of the fixed-function pipeline I never even use anymore). When I called glOrtho() with the context width and height, I produced an OpenGL INVALID_VALUE error. From there it wasn't hard to figure out the cause...[/font][/color] [color=rgb(0,0,136)]int[/color] [color=rgb(102,0,102)]Window[/color][color=rgb(102,102,0)]::[/color][color=rgb(102,0,102)]GetClientWidth[/color][color=rgb(102,102,0)])[/color] [color=rgb(102,102,0)]{[/color] [color=rgb(0,0,136)]return[/color] [color=rgb(0,102,102)]0[/color][color=rgb(102,102,0)];[/color][color=rgb(136,0,0)]/*don't forget to add this later*/[/color] [color=rgb(102,102,0)]}[/color] [color=rgb(0,0,0)][font=arial]Once I implemented the missing function, everything worked fine. So I am pleased to unveil the very first screenshot in the history of the universe of Leadwerks running in Linux using OpenGL 4:[/font][/color] [color=rgb(0,0,0)][font=arial]Behold, the green square of triumph![/font][/color] [color=rgb(0,0,0)][font=arial]Though this is a simple example, we have a full 3D engine with deferred lighting and a really unique terrain system, so I don't think it will be long now before we can start showing off some great Linux graphics. Linux has the fastest possible performance for 3D rendering, so it will be interesting to see what we can do with it.[/font][/color]
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!