• Content count

  • Joined

  • Last visited

Community Reputation

1440 Excellent

About JoshKlint_34394

  • Rank

Personal Information

  1. 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.
  2. [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]
  3. Leadwerks Software at Steam Dev Days: #linux #steamos #steamdevdays #ubuntu
  4. [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]
  5. [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]
  6. 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.
  7. 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.
  8. [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]
  9. Leadwerks is on Steam

    I think you should try them all and choose what suits you best.
  10. 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.
  11. 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:   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.
  12. [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]
  13. 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.
  14. Leadwerks is on Steam

  15. 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!