I was optimizing and downsizing my computer systems yesterday, and I thought I would write a blog about how I keep my Windows, Mac, and Linux systems running, along with email on my iPhone.
Install Windows and Linux on Two Separate Hard Drives
The best way to run Windows and Linux side by side is on two separate drives. Try anything else and you will run into trouble. You should unplug the other drive when installing the OS to make sure they don't interfere with each other. Use the boot
I figured out why some Workshop items weren't installing correctly. There's a series of steps I need to go through to make a paid item ready for sale, and I omitted one button press in the Steamworks interface.
If you experienced downloading problems with the nature model pack, zombies, or any of the scifi material packs, they should work now.
Let me know if you still have any problems.
Everything I'm working on right now is a real grind. Trying to get some window code to run on Mac and chatting with Valve on how to optimize the Workshop Store. If I didn't have a plan this would not feel like I was going anywhere. I think that's why programmers often fail to reach beyond a certain level of success. I don't mean simply financial success, I mean they don't go big enough to make a really complete product. They make a car with 22 different gears and no seat. If you don't have
Being reasonably confident that my GUI design will work on Windows and Linux, I wanted to make sure it would also work for Mac computers. The first step was to compile Leadwerks Game Engine in Apple's Xcode IDE. Like Visual Studio and Code::Blocks, I was able to create two targets so that the same project can be used to compile both the static library and standalone executable.
At this point the Window class for Mac contains mostly empty functions that don't do anything, but this is a
The most interesting thing about the development of Leadwerks is digging into low-level X11 libraries that no one really understands. If the stock answers of "use GTK" or "use QT" were sufficient, this project would not be necessary. No one really knows how X11 works anymore, so it's like we are exploring an archaeological ruin and discovering ancient forbidden knowledge.
Here's me looking at the X11 documentation.
X11 doesn't really have a concept of non-embedded child wind
The general GUI elements for LeadwerksGUI are more or less done, and I have turned my attention to another problem. The LeadwerksGUI system is built around the notion that GUI widgets have a discrete bounding box in which they are contained. All events and drawing occur within these bounds, which are further constrained by either their parent widget's bounds or the area of the window they are created on. However, there are three situations where this paradigm breaks down.
Menus
Wind
I got back last night from Steam Dev Days 2016 in Seattle. This year focused heavily on VR, with Valve mentioning they are working on a new unannounced title built for VR. Valve also announced Steamworks will begin supporting the PS4 controller, with other controller support in the works.
This was also an opportunity for me to meet with a bunch of people on the Steam dev team and chat with other developers. I got a lot done! We're getting our Steam controller integration fixed, as I
A small update is available on the beta branch. This just changes it so that surfaces using the leaves or groundplant vegetation shader will be skipped when computing a convex decomposition. This was implemented specifically to make it easier for Nenero to get his Tree Pack approved for sale in the Workshop Store. At this time, only the Windows build is affected.
I will be in Seattle tomorrow evening for Steam Dev Days, along with some other people from the Leadwerks community.
These are the top-ten top grossing items in the Leadwerks Workshop Store over the last three months:
Nature Model Pack
SciFi Materials 1
Modern Sewer Construction Kit
Zombie Action Figures
Old Furniture Pack
SciFi Materials 5
Mercenary Action Figure
Morgue
Strike Troop
The Stalker
First of all, we can see that outdoor vegetation and rocks sells best. This is consistent with what I have seen with our DLCs and with products in the past.
We also see four c
If you opt into the beta branch of Leadwerks Game Launcher on Steam, you can now try the application out on Linux, using the new LeadwerksGUI user interface.
LeadwerksGUI is a cross-platform GUI library that features DPI scaling for any resolution, supporting 4K and retina screens.
Diving into the innermost workings of the Linux operating system is a pretty interesting challenge. Pretty much nobody nowadays implements anything with raw X11 anymore. They use QT, SDL, or for drawing Cairo, with Pango for text rendering. The thing is, all of these libraries use X11 as the backend. I need full control and understanding over what my code is doing, so I've opted to cut out the middleman and go directly to the innermost core of Linux.
Today I improved our text rendering b
In this blog I am going to explain my overarching plan to bring Leadwerks into the future and build our community.
First, regarding technology, I believe VR is the future. VR right now is basically where mobile was in 2006. The big publishers won't touch it and indies have a small but enthusiastic market they can target without fear of competition from EA. I have an HTC Vive and it is AWESOME! After using it, I don't really want to play games on a 2D monitor anymore. I want to be in the gam
Below you can see LeadwerksGUI running nicely on Ubuntu. Once we get through the window and event code, the GUI code acts exactly the same on Linux and Windows. The behavior of the widgets is reliable and double-buffered rendering makes the appearance perfectly solid. Image loading is not working yet, but you can see the vector graphics are working perfectly.
Leadwerks GUI will provide a smoother user experience on Linux and give us cross-platform UI consistency across all operating
I've begun a Lua script for a Treeview widget. This is arguably one of the most complex widgets to implement, but after having done this in another language I have a design that I think is pretty simple. The script sorts all tree view nodes into a linear list-like table so that they can be drawn quickly. Like other widgets, the script will calculate where the starting point in the list is to display just the visible nodes. This is very important because it prevents the program from slowing d
I figured out how to make our GUI resolution-independent so that the existing editor code will correctly create items with the same proportions. This was very difficult, and it works really well! Some images aren't scaled here, but the important thing is the existing code is working the same, with no changes.
When the GUI is scaled to 200%, the buttons are bigger and indented further in from the right / bottom edges. The code that creates them just calls the parent ClientWidth() minus 74
Over the recent months the Leadwerks Workshop Store has experienced a noticeable increase in sales, correlating to an increased number of products offered. Although Workshop Store sales are quite a bit lower than DLC sales, the Workshop Store is more scaleable because it allows third parties to submit a greater variety of products.
We're also able to send out payments to Russia and other regions that other stores and websites may have trouble sending payments to, because our transaction sys
A new build is available on the beta branch on Steam. This updates everything, C++ and Linux included.
A bug where the editor skipped navmesh calculation on brushes is fixed.
We're updated to the latest version of the Steamworks SDK, which may fix some Workshop upload and download issues.
Animation now calculates more than twice as fast as previously. This was achieved by optimizing the animation code, implementing some inline functions, and by changing the way the matrix updating
We're up to 81 games in Steam Workshop now, and I expect we'll see quite a few more released before the end of the tournament. Some of the stuff this tournament especially is really good, so it's not too soon to start thinking about the final release of game launcher on Steam. At that point the application will no longer be marked "Early Preview" and will get a big increase in downloads on Steam since its visibility will be much higher.
I want to launch with at least 100 total games. This
The beta branch of Leadwerks Game Launcher on Steam is now using Leadwerks GUI. You can try it out now for free here:
http://store.steampowered.com/app/355500
So I've been using Valve's VR technology quite a while before the HTC Vive was released, but I only recently picked up the final consumer version. Here are my thoughts on VR games.
First, VR games are completely different from non-VR games. Motion in the virtual world should never contradict motion in the real world. All the early Oculus demos are examples of what not to do.
"The Lab" by Valve really shows the depth of interaction VR opens up. You interactions with the virtual world
As described previously, I decided to create a custom widget script to replace the game launcher's HTML panel. The results are already looking awesome! The UI looks really slick. It's great to see this idea come to life in such a striking and attractive manner.
What's really cool is the OS drawing commands are being used, so the games grid uses cleartype subpixel antialiasing, and the UI is completely solid with no flashes or little visual glitches.
Oh, and except for the window
I've got the Steamworks HTML renderer working with Leadwerks GUI now. The current build on Steam uses the Windows HTML renderer, which is part of IE. This isn't cross-platform, which is one reason why game launcher isn't available for Linux right now. The Chromium-based Steamworks HTML renderer is cross-platform but there are some issues.
The HTML renderer works by rendering a web page into a memory buffer and then uploading that buffer to a texture and drawing it onscreen. The visible r
When the new Window::Embedded style is used in the window creation function, the window will appear as a panel, as part of the parent window. The black region here is an embedded window parented to the main window. (The tabber and other panels and controls are all just Leadwerks objects; Windows doesn't recognize them or know they're there, as they are just created by Leadwerks structures and drawing commands.)
Why is this special?
The embedded child window uses single-buffer draw
MaxGUI is an abstracted GUI system for the BlitzMax programming language. This allows Windows, Mac, and Linux native UIs to be created using the same code. The LeadwerksMaxGUIDriver module integrates Leadwerks GUI so that existing programs can be recompiled using our new UI system. Here's the first shot of it working in an actual existing program:
The text area widget is now available on the beta branch on Steam, for Windows and Lua only at this time.
The text area is a read-only widget at this time. However, the text is all selectable, and in the future will be able to be copied to the clipboard. This widget creates two scroll bars which appear only when needed, for horizontal and vertical scrolling. The multiline text selection and scrolling was pretty difficult to implement, but the results are really nice.
I'm not goin