Jump to content

Josh

Staff
  • Posts

    23,219
  • Joined

  • Last visited

Blog Entries posted by Josh

  1. Josh
    The Workshop interface will now more closely match our website. Item pages will now display videos, multiple images, and other information about the items.
     

  2. Josh
    Based on the results of the summer games tournament, we can expect each new tournament to produce about 10 games:
    http://www.leadwerks.com/werkspace/blog/41/entry-1510-leadwerks-summer-games-tournament-results/
     
    Right now we're at 35, which means by the end of the winter games tournament it is reasonable to expect 50 Game Launcher games.
     
    My Steam Workshop changes are now implemented to provide more reliable downloads.
     
    Support for SteamOS will be added in November, with a full-screen GUI that works with a controller.
     
    So here's my tentative schedule:
    November 20: SteamOS support added.
    January 15: Game Launcher switches to full release mode with 50 games, appears on Steam new releases.
  3. Josh
    I just got a ticket to GamesBeat 2015 Summit. Message me if you'd like to meet up during the event.
    https://www.linkedin.com/profile/view?id=AAMAAABZ4BAB_h-adCunzdSr7r90HFOdx_MLrow
  4. Josh
    I'm very happy with the progress our community as a whole is making. Instead of getting distracted with endless technical features, we're releasing games.

    Lean Game Development
    The Lean Startup Methodology basically states that life is too short to build a product no one wants. Companies invest years in development to release a product onto the market, only to discover that early design flaws doomed the product from the start. Lean Startup Methodology posits that one should release a minimum viable product before investing too much time in an idea that might be quite a ways of from what your user really wants. The idea is to put something out, get a response, use that response to formulate ideas, and then release again. This is how Leadwerks Game Launcher is meant to be used as a tool. 

     
    Many people have completed the first three steps and have a product out now that other people are playing. The next step is to measure the response to your product. This can be done in two ways.
     
    Quantitative data is numerical or categorical data that is measured in a uniform manner. The number of subscribers to your game is one piece of quantitative data. Quantitative is easy to analyze with a formula, but the only data you will get are the metrics you record; If your number of players goes down, you don't really have any idea why.
     
    Qualitative data is open-ended feedback. Comments on your game's Workshop page are an example. Qualitative data is useful because it helps reveal information you did not specifically ask for, but it can be difficult to compare among subjects, because the information isn't easily quantified.
     
    At this stage in your game I recommend using a tool that can provide both quantitative and qualitative feedback. This tool is usability testing,and we have a way to easily perform it in Steam.

    Usability Testing with Steam Broadcasts
    Steam broadcasting allows you to view another player's game in real-time. Want to find out how a new player actually performs in your game? Want to find out where people are running into problems, getting frustrated, or getting bored? The truth is, user feedback isn't always that useful. Only a small percentage of your players will bother commenting about anything, and their opinions aren't necessarily reflective of your users as a whole. On top of that, users are pretty bad at describing what they really want because it's not their job to design your product. Usability testing allows you to find major usage problems in an objective manner without relying on the opinions of a few vocal players. 
    You can use Steam Broadcasting either by requesting to watch a player's game, or inviting someone to watch yours. To request to watch a game, just select the "Watch Game" menu item from your friend list, while the player is Leadwerks Game Launcher.
     

     
    If you want to invite someone to watch your game, this can be easily done by inviting them in the chat dialog. (You can open the Steam overlay while you are in-game and open a chat dialog from there.)
     

     
    Once the broadcast has started, you will see the video in the Steam interface.
     

     
    The great thing about usability testing is it doesn't take much effort or time. If you have glaring problems that people get stuck on, you will find them very quickly with this method. I think you will be very surprised when you see how people are actually playing your game, and it will become immediately clear what needs to be fixed.
     
    To get the most out of usability testing, I recommend the following:
    Use subjects who are completely new to your game and have never played it before.
    Don't bother testing more than three people. Any more than that is a waste of time. Trust me, they will find problems you had no idea existed, and it will be really clear afterwards what needs to be improved.
    Measure your results. You should write down notes as they are playing, and also measure some quantitative values like how many people got through a level or were able to accomplish some task.
    Don't answer questions or help the player, just passively watch.

     
    Once your usability testing is complete, now you have real actionable data! Read over that data, learn from it, and use it to come up with ideas how you can make your game better. Build a new version,publish, and repeat. Your steps are as follows:
    Perform usability tests and record data.
    Quantitative data (number of players that completed a task, time taken, etc.)
    Qualitative data (notes)
    [*]Analyze data and come up with ideas for improvement.
    [*]Release a new version and repeat.


     
    This approach will help you create a game people love instead of guessing what players want and working blindly. Don't wait until after your game is released to find out what you did wrong. Release early, test, and learn how people are really playing your game.
  5. Josh
    An update is available on the beta branch. This will improve rendering speed of uncollapsed brushes in-game. You may also see a speed increase in the editor when viewing maps with lots of CSG brushes. You can read about this in detail in this thread.
     
    Lunarovich's suggestion here has also been implemented.
     
    I also tweaked a few stock prefabs and the FPS example map. The crates and boxes will now all use the dynamic shadow setting, and the red cage light prefab is set to only cast static shadows now. This prevents a lot of excessive shadow rendering in the big elevator room, since each point light requires six passes. You can see in the screenshot below the monsters aren't casting shadows from the red light on the right, but they are casting a shadow from the big overhead spotlight. It looks good and the performance is a lot more consistent now.
     

     
    Don't forget we are scheduling a Google Hangout Saturday the 5th at 1:00 PM PST to review the release of Leadwerks Game Launcher.
  6. Josh
    Leadwerks Game Launcher is now marked as "Ready for Review" by Valve and scheduled for release Monday, August 24. I decided to allow one week for final testing of Leadwerks Game Engine 3.6, which will be released at the same time (and to try to get a few more games in before the release). The application will be released as a free "early access" software application (and will remain free). There's a good lineup of games that are pretty enticing, and the price point will gain a lot of enthusiasm for your games and demos.
     
    My target is to bring you 10,000 players for your games by Christmas. This will help you build a fanbase, get useful feedback, and will make it easy to recruit help or conduct a successful Kickstarter or Greenlight campaign for your game. It's important to manage expectations for this application and not give the wrong impression about what it is. Our Workshop games are not going to be what every Steam user wants, but I believe there is a market segment that wants to play something a little more experimental and "off the beaten path", instead of the latest generic AAA shooter. My description makes it clear what kind of gamer we are targeting with this, so that we can build a cult following for your games.
     
    If you want to publish a game before next week, contact me to receive a free beta key to get access to the program early.
     

  7. Josh
    You may have noticed our deferred decals (presently in beta) tend to shift with distance. Something was wrong with the screen space to world space conversion, but it's a hard problem to describe. I wrote a function based on the work Igor did for his SSLR shader, like this:

    vec4 ScreenPositionToWorldPosition(in vec2 texCoord) { float x = (texCoord.s / buffersize.x - 0.5) * 2.0; float y = (texCoord.t / buffersize.y - 0.5) * 2.0; float z = texelFetch(texture5, ivec2(texCoord),gl_SampleID).r; vec4 posProj = vec4(x,y,z,1.0); vec4 posView = inverse(projectioncameramatrix) * posProj; posView /= posView.w; posView+=cameraposition; return posView; }
     
    OpenGL stores depth values in a non-linear manner, which yields more precision closer to the camera. This allows a 24-bit depth buffer to cover a much greater distance than a linear depth buffer would allow with acceptable visual fidelity. The problem with the above equation is that the exponential value isn't being converted back into a linear value before being multiplied by the inverse camera projection matrix.
     
    I found a PDF with a formula I had come across before and started messing around with it: The trick is this:

    lineardepth = exponentialdepth / 0.5 - 1.0
     
    This equation can change if you have set glDepthRange to anything other than the defaults. (Coincidentally, calling glDepthRange() was what messed up my deferred renderer for iPad a couple years ago and forced me to use an extra floating-point buffer for storing screen depth at my GDC talk.)
     
    Plugging this into my function and eliminating the camera position add results in the following code:

    vec4 ScreenPositionToWorldPosition(in vec2 texCoord) { float x = (texCoord.s / buffersize.x - 0.5) * 2.0; float y = (texCoord.t / buffersize.y - 0.5) * 2.0; float z = texelFetch(texture5, ivec2(texCoord),gl_SampleID).r; z = z / 0.5 - 1.0; vec4 posProj = vec4(x,y,z,1.0); vec4 posView = inverse(projectioncameramatrix) * posProj; posView /= posView.w; return posView; }
     
    This also eliminated a couple of strange divide by twos I had in the texture mapping, which didn't really make sense to me at the time. Below you can see a decal rendered on a surface from a far distance, with no inaccuracies in the texture alignment.
     

     
    In reality, this was probably about five hours of work with "River Monsters" playing in the background.
  8. Josh
    I previously reported that Leadwerks Game Launcher had obtained 4000 users. My records in Steam have changed and it now reflects a user base of 1765 users. I think the reporting for free applications was not working correctly, because this number is much closer to what I would expect based on game subscriptions.
     
    The application is still in early release mode and has not been officially launched, and it will have low visibility before the final release. This gives us a period of time to work out any glitches, add support for SteamOS, and add to the number of games offered.
  9. Josh
    To help with your games in the Summer Games Tournament, Rich DiGiovanni has created a fun set of summer-themed models, including a beautiful sandy terrain texture for laxing out at the beach.
     

     
    You can install this pack free from the Leadwerks Workshop:
    http://www.leadwerks.com/werkspace/page/viewitem?fileid=464751401
     
    If you need any custom models made, check out Ancient Idol Studio for quality work at reasonable rates.
  10. Josh
    The Workshop in Leadwerks Editor has been updated to use the same web interface as the game launcher. Page numbers have also been added to both. In the future, the Leadwerks Workshop interface will probably start to resemble the Game Launcher interface more.
     

  11. Josh
    The beta branch on Steam has received an update with some important changes.
    A new project template called "Tutorial Samples" has been added, which includes the files you need to complete the new tutorials found here.
    A new script, Main.lua, has been introduced to take over the main entry point of your program. As explained in detail here, this will have no effect on your existing projects.
    The screenshot publish feature is fixed.
    Flowgraph arguments no longer require the EnableLegacyFeatures setting to be enabled.
    A sweet new welcome page has been designed.

     
    (Build 621802 was updated to 626936.)
  12. Josh
    A new update is available on the beta branch. A few months ago, Valve introduced the SteamUGC API to Steamworks SDK. This replaces the original RemoteStorage API, and allows unlimited file sizes and a simpler command set. I also suspect the internals in the Steam client and servers are more reliable, because it is a second-iteration design. The beta build can download Workshop items published with the old legacy API, or with the new one. However, Workshop items published with the beta build will not be downloadable by the release build until version 3.5 is released. I am implementing this now because I think it will be more future-proof, and because I suspect it will solve some problems people have had syncing Workshop items.
     
    A command-line switch has been added to allow Leadwerks to automatically install Workshop items. This is now integrated together with the Steam browser protocol in our site, so that pressing the "Install" button on a Workshop item's page will launch Leadwerks and install the item. (This requires the beta build):
    http://www.leadwerks.com/werkspace/page/viewitem_?fileid=429595109
     
    The games section by default is now showing Workshop games from Leadwerks Game Launcher. If you have the Leadwerks Game Launcher beta, you can press the "Play" button to automatically launch a game in Steam. Games will show up automatically when they are published to the Workshop.
     

     
    A new Screenshots section on the site displays in-game screenshots people have uploaded from Leadwerks Game Launcher. By default Leadwerks Game Launcher screenshots are set to private because the application is unreleased. However, you can change this setting on the screenshot's page in Steam, and it will appear in the stream.
     

     
    These changes are all part of the overall direction Leadwerks is going in, which will benefit all members in our ecosystem, including developers, artists, and players.
  13. Josh
    I like how a sequence of decisions can lead in one overriding direction. It's very fun.
    The FPS weapons and zombie packs were released because I felt there needed to be a little more built-in gameplay available to users.
     
    The Steam Community Choice sale resulted in a large number of new users, most of whom are completely new to game development.
     
    The Winter Games tournament resulted in ten new games that were fun and very creative.
     
    This finally gave me the ammo I needed to launch the standalone game player on Steam. All the videos and screenshots look great, so for Steam users it's a no-brainer to vote yes. This will be awesome because you'll be able to get thousands of players very easily who will give you feedback on your game and become your fan base, when you're ready to move on to Kickstarter or Greenlight.

     
    This came about because it was decided that "gameplay" was the most important factor we needed to focus on. And now we are seeing the result of that, and it is very good. I'm pretty darn proud of what you guys have made, and I am very happy with the direction we're going in.
  14. Josh
    A new update is available on the beta branch on Steam.
     
    Changes
    Temporary slowdown from last beta is fixed.
    Bone picking behavior now matches default branch's original behavior (for compatibility with existing code).
    All recently locked bug reports fixed.

     
    Please see this note about updating C++ projects to accommodate the addition of the VHACD library.
  15. Josh
    A new update is available on the beta branch. This adds automatically generated hitboxes for animated characters, and a new tool to calculate physics shapes using convex decomposition.
     
    Existing C++ projects require a small modification due to the addition of the VHACD library. The VHACD includes directory must be added to the project header search paths.
     
    Visual Studio:

    $(LeadwerksHeaderPath)\Libraries\VHACD\src\VHACD_Lib\inc
     
    Code::Blocks:

    $(LeadwerksPath)/Include/Libraries/VHACD/src/VHACD_Lib/inc
     
    The C++ templates for new projects have been updated with these changes.
  16. Josh
    You can now try out the new Workshop Browser by opting into the beta branch. This makes it simpler to install Workshop items, and allows you to browser, install, and uninstall items without having to switch to the Steam window.
     

  17. Josh
    I've added display pages to the games database, so you can now fill in more information about your game, receive comments, post a video, and add additional images if you wish:
    http://www.leadwerks.com/werkspace/page/games/_/rogue-system-r17
     
    In the future I will add a file upload option so you can distribute your games here if you want to. Some games in the Downloads section have received a pretty high number of downloads, even though they were hidden away and weren't promoted at all:
    http://www.leadwerks.com/werkspace/files/category/19-games/
     
    I took the liberty of filling in some values for the different titles, but you can now modify your entry as you see fit. I know of 50 different games in development, so I hope to consolidate these and not have a separation between casual and more long-term titles, since I am a fan of both.
  18. Josh
    A launch option has been added to Leadwerks on Steam that allows you to launch the Leadwerks Game Player outside of the editor. When you launch Leadwerks Game Engine from Steam, a dialog box appears and lets you choose whether to run the editor or the Leadwerks Game Player. (If you just launch the app from a desktop or start menu shortcut, the editor is run automatically.) You can subscribe to other users' games in the Leadwerks Workshop on Steam, and play them by launching the game player. The option is not yet available on Linux, since this requires an additional shell script the current stable build does not have yet.
     

     
    One of the Leadwerks 3.3 features that's built into the current beta is the ability to select which Workshop packages get packed into your game when you publish, as a standalone or to the Leadwerks Workshop. In the current beta branch on Steam you can right-click on a Workshop folder and choose the "Add to Project" menu item. This will tell the publisher to include the contents of this package when your item is published. You must add each package you want to include, or it will not be included when your project is published.
     
    This allows you to publish games without including every single Workshop package you are subscribed to.
     

     
    These changes are available now on the beta branch on Steam.
  19. Josh
    Since it's not a competition, I'm actually going to enter the game tournament and publish a simple game to the Workshop. The game will be a third-person corridor space shooter like Starfox in which you simply shoot and dodge meteors. There are two types of meteors flying at you; red ones can be shot, whereupon they break into smaller pieces that can still damage you. Gray ones cannot be shot, and must be avoided. The longer you live, the more points you get, and it just gets progressively harder with faster and more meteors.
     
    I also decided to add pumpkins in space. Why? Because they're awesome. Pumpkins will slowly glide towards you when they get close, attempting to crash into your ship.
     


     
    I haven't thought of a title yet.
  20. Josh
    It's pretty clear that constructive solid geometry modeling is a high priority for our community. I like being able to easily sketch out my ideas. In fact, when this feature went away in Leadwerks 2, that was when I just stopped making game levels. It's not that I don't know how to use 3ds Max and other programs, it's just that they're not fun. The upcoming release of Steam Workshop also fulfills my long-held dream of building a shared repository of textures and models scaled correctly to work with CSG mapping.
     
    Today I began some preparatory work, starting with some texture templates:

     
    These are important because they give us a standard template we can line solids up against:

     
    Why does this matter? Well, when we have a standard template for common features, we can design textures that match the geometry, like this plaster wall below:

     
    This is one of the tricks that makes maps look great, and it's easy to set up once you have a standard template.
     
    However, I ran into one big problem. Leadwerks 2 started using a scale of 1 unit space = 1 meter. This makes a lot of sense, because it is easy to measure physics and large distances, as Leadwerks 2 was mostly an outdoors engine. When it comes to texture mapping, however, this scale is not ideal at all! A human being is roughly 1.8 meters tall. That means that 2 meters is just a little over their head, and is too short to place a wall texture on. We can scale the texture up on the surface, as I did in the example AI map, but this will cause problems. The grid in Leadwerks is based on powers of two, and if we scale the texture up to 2.5 meters in size, it's going to be hard to line brushes up precisely against the texture pixels! What to do?!
     
    On the other hand, using a centimeter grid gives a perfect scale. 256 cm is roughly the height of a one-story building's wall, so mapping textures on that scale makes a lot of sense. I realized I could just display a grid in centimeters instead of meters, and it would totally solve this problem, without requiring any rescaling. So I added that setting in the Viewport options and it works perfectly. The door on the left was modeled with the centimeter grid while the one on the right was modeled with the grid measures in meters. Because the grid is power-of-two, the centimeter grid had major grid lines at 2.56 meters, while the meter grid had it at 2.0 meters:

     
    This will not affect your existing maps, but I recommend you start using the centimeter grid for new maps. This preliminary work will allow me to unleash our artists to produce more texture packs for you to use in your maps, and will allow the community to work together more effectively.
  21. Josh
    In order to get ready for the Workshop, and to get ready to implement texture locking, some preliminary work needed to be done. First, I needed to improve the CSG texture mapping routine. It was modified to take into account a texture's dimensions. This means that wide flat textures like this trim piece will be mapped to their texel area, not with the same aspect ratio as a square image:

     
    The default mapping scale is that 1024 texels maps to 256 centimeters. This ensures it is easy to line geometry up to match details in the textures, and most materials will just automatically map to the size you want. However, there are many wall textures out there that are only 512x512 texels, so I added a "Mapping scale" feature in the material editor. This can be used to give any material a default mapping multiplier, so it will always show up at the intended scale, without having to adjust texcoords each time you use it.
     
    A pick material mouse tool has been added. This is like a color/eye dropper that lets you click something in the scene, and the picked object's material will be shown and highlighted in the asset browser. This is just a nice tool for convenience, and I found I really wanted something like this as I was working.
     
    Finally, a "Treat as one" option has been added in the face properties. When this is checked, the justify buttons will treat all selected faces as one when aligning their texture coordinates.
     
    Justify left with the "Treat as one" disabled acts like this, alining each individual object separately:

     
    And it acts like this when "Treat as one" is enabled:

  22. Josh
    About a year ago, before I even had my cool hat, I wrote a blog post called What's the Big Idea? that talked about some big-picture ideas about where Leadwerks is going:
    Well, a year later, this idea is coming to fruition. I previously broke down the user journey into Education, Collaboration, Promotion, and Distribution. This has now been distilled down to the new Leadwerks tagline: Learn, Build, Play. I had our logo reworked and I am very proud to present to you this beautiful design:
     

     
    The logo also makes for some gorgeous wallpaper.

    Learn, Build, Play
    What does Learn, Build, Play mean? Learn means that our tutorials should teach a complete beginner everything they need to make their own games. Our educational material should not simply teach how to use Leadwerks, it should teach how to make games with no previous knowledge required. That's why our lessons go into such detail to explain basic concepts. It also means we will continue to teach how to make different games, and add features that support that. For example, an RPG game template is a popular request, and a built-in GUI system with some kind of inventory control would make this teachable. 
    Build simply means Leadwerks Game Engine as a game development tool. What used to be the entire focus of the company is now just one-third of Leadwerks. (Although this part still takes 90% of my time!) For more information about the specifics of continued development, see my blog post here.
     
    Play, as you might have guessed, means free self-publishing to Steam with Leadwerks Game Launcher. This is about connecting game developers with an audience and delving into the consumer side of games.
     
    This makes Leadwerks more than just a game engine. Leadwerks is a platform for building and playing games.

    Building a Vision
    Why is this important? Having a distinct direction gives us a criteria to weigh decisions against. For example, when the new tutorials were being designed I specified they had to describe everything, down to the level of explaining what a mipmap is. That would not have happened with a different vision for Leadwerks, or with no vision. 
    This also puts us all on the same page so we all share a view of where the community is going. I am happy to be able to explain this to you now, and look forward to a very big rest of the year. Here is the new Leadwerks trailer, which has been updated to reflect the values we want to promote:


     
    And here's the new showreel showcasing your games made with Leadwerks:


     
    If you would like to play around with the logo image, you can download the complete artwork files below.
×
×
  • Create New...