Jump to content

Josh

Staff
  • Posts

    23,330
  • Joined

  • Last visited

Blog Entries posted by Josh

  1. Josh
    Previously, I have talked about my plans for Leadwerks and how to get there. In that blog I started with technical specs and went backwards with the path we would follow to achieve those goals. Now I have begun to put some of these ideas into practice and I want to review my plan with you.
     
    I met with a very large academic institution a few months ago and talked about using Leadwerks to teach game programming. This is the whole reason I wrote this blog and did the research included therein. When I put the graph up showing job requirements, it was a very easy sale.
     

     
    I then gave a short talk to a group of their students who had some web development background, but had zero game development experience. Perfect! These people are my bread and butter. The purpose of this was to gauge interest in a class in game development, and they were very interested.
     
    As I was talking to these people I realized I could not meet their expectations. No one else could either, but I knew at the end of a two week course they would only have very rudimentary ugly games made, not the dreams they had in their head. These people did not know anything about mipmaps, debuggers, texture coordinates, and they did not care. They just wanted to make games.
     
    I cancelled my plans to hold a class because I knew we weren't ready to give them what they really needed. Leadwerks is the easiest way to build your own 3D games, but we are not all the way there yet. No one out there is really giving complete beginners the means to learn to make their games quickly, but we can be the first to do it with a bit more work.
     
    As I stated previously, the documentation is being revised, including an offline copy of the docs. This takes an enormous amount of time because I have to copy, paste, and edit hundreds of pages. I am also revising all the code examples to only use the main .lua and .cpp files and get rid of the App::Start() stuff, which is a holdover from mobile.
     
    The next step is to create a broader selection of high quality game templates. This is the final step that is needed to bridge the gap between game development technology and a complete beginner. The templates have to be polished and feel like a game you would actually want to play. This must happen or everything I have done has been a waste of time.
     
    We are in a race against time to connect with a large audience in a way where they can't imagine life without Leadwerks. If I fail to do that, we will go the way of every other abandoned open-source game engine out there.
     
    So that is what I am working on.
  2. Josh
    Here are some concepts I came up with for the site redesign.
     

     

     

     
    The bold no-bull**** interface of itch.io inspired this design:
     

     
    I think what will work best is if the designer takes my rough sketches, turns it into a clean design, and implements it with clean code.
     
    I don't think we can change the whole site over at once without me losing control of the creative process and having runaway costs. I want to focus on the pages I have shown here and establish a foundation I can experiment with and iterate on.
  3. Josh
    With the upcoming uncertainty that Steam Direct introduces to Steam sellers, I am putting more effort into our website, because it may be the primary channel through which new users discover Leadwerks in the future. Although the functionality of our site is awesome, the visual design is rather outdated and it's time for an actual designer to take over. I've got a rough idea of what I want the site to look like, but beyond that I am happy to let someone else figure it out.
     



     
    I plan on the design using lots of big images, and we have a large collection of high-res renders made with Leadwerks that will look great.
  4. Josh
    I've successfully pulled every website page out of the Invision Power Board CMS that I can:
    http://www.leadwerks.com
    http://www.leadwerks.com/graphics
    http://www.leadwerks.com/editor
    http://www.leadwerks.com/programming
    http://www.leadwerks.com/features
    http://www.leadwerks.com/steamos
    http://www.leadwerks.com/gamelauncher
    http://www.leadwerks.com/workshop
    http://www.leadwerks.com/gallery
    http://www.leadwerks.com/videos
    http://www.leadwerks.com/games
    http://www.leadwerks.com/company
    http://www.leadwerks.com/contact
    http://www.leadwerks.com/termsofuse
    http://www.leadwerks.com/privacy
    http://www.leadwerks.com/cookies
     
    These pages load independently from any of the community software files, so the website and community can be updated separately.
     
    I've taken the web design as far as I can, which is better than most designers would do, but not as good as I want. The website really needs to sell the software. Now I am looking for a high-quality redesign, which I expect to cost a fair amount of money. I'm primarily looking at design firms in the SF bay area who have experience making AAA game websites.
     
    The community software will be updated to the latest version, which breaks our skin and other customizations. A new skin will be designed that will be similar but not identical to our current look.
     
    At one time, I tried to use IPB for everything, including commerce, a gallery, and downloads, but I don't think a CMS can be very good at all things. We're only using IPB at this point for the forum, blogs, and a few custom databases and pages. Steam is working well for screenshots, videos, and downloads (Workshop), and I use custom PHP scripts to retrieve and display that information.
     
    The beta branch of the editor has the Workshop home page set to the new location and everything should work without a hitch.
     
    The documentation is also being separated out into a different system that is better suited for that purpose, but that will take more time.
  5. Josh
    A full update for Windows and Linux is now available on the beta branch which addresses several small problems:
    http://www.leadwerks.com/werkspace/topic/15772-standalone-build-wont-launch/
    http://www.leadwerks.com/werkspace/topic/15761-entity-gets-has-stopped-working-error/
    http://www.leadwerks.com/werkspace/topic/15766-crash-anything-since-last-update-object-already-deleted/
     
    The version of the VC redistributable has also been updated in Steam and will fix this problem if you are having trouble running your game from the editor in debug mode:
    http://www.leadwerks.com/werkspace/topic/15734-problem-starting-43-in-debug-mode/
  6. Josh
    An update to 4.3 is available on the beta branch. This fixes it so the editor is not DPI-aware and will be scaled correctly if scaling on Windows is used. This build is also built with a fresh install of Windows 10 and Ubuntu (but it shouldn't make any difference).
     
    This is a full build for Windows and Linux, with C++ libraries included. Game Launcher is also updated on its beta branch.
     
    If there are no problems with this, it will go onto the default branch in a couple days.
  7. Josh
    An update is available on the beta branch for Windows, editor and Lua executables only. This fixes a problem in the new light update system:
    http://www.leadwerks.com/werkspace/topic/15713-shadow-update-editor-issues/
    http://www.leadwerks.com/werkspace/topic/15716-43-child-entities-do-not-cast-shadows/
     
    The animation shaders are also modified and they will appear better:
    http://www.leadwerks.com/werkspace/topic/15710-all-animated-shaders-have-wrongstatic-normals/
  8. Josh
    I am going to try something different this time and use the Thunderclap tool to promote the release of Leadwerks 4.4, which I have scheduled for April 3:
    https://www.thunderclap.it/projects/52943-leadwerks-game-engine-4-4
     
    Please sign up to help with the launch if you would like to promote it.
     
    Also, there is still time to help the launch of A Demon's Game:
    https://www.thunderclap.it/projects/52763-a-demon-s-game-crowdfunding
  9. Josh
    I'm going to focus on directing people to the Leadwerks mailing list and getting people to sign up for Leadwerks accounts. This is much more valuable than social media followers we have no data for, or even Steam users we can't contact directly.
     
    We do need something extra to get the word out to people on the web about Leadwerks, but I don't think Facebook and Twitter are it...
  10. Josh
    A full build is available for Windows and Linux on the beta branch on Steam. This fixes a problem with the character controller physics and with the Alt key on Windows.
     
    To upgrade 4.2 C++ projects to 4.3, you must add the following search paths:
    $(LeadwerksHeaderPath)\Libraries\libvorbis\include
    $(LeadwerksHeaderPath)\Libraries\libogg\include

     
    I'm pretty sure it's ready, but please give it a good thrashing. This will go up on the default branch tomorrow morning.
  11. Josh
    I've uploaded a full build for Windows and Linux, and updated the game launcher beta branch. This adjusts some very minor issues that you probably won't even notice.
     
    Some of your characters might need to have their character controller angle setting set to 180, depending on how you have them set up. This is because some previously incorrect behavior has been fixed. You can use my third-person player script for testing.
     
    My only concern at this point is that some of HaydenMango's games now have characters that are walking too slowly. I haven't seen this problem in any other games, so it is hard to guess what could be causing that.
  12. Josh
    I've uploaded a release candidate of version 4.3 on the beta branch. This is a full build, for Windows and Linux. The Game Launcher beta branch is also updated.
     
    If all is well this will go onto the stable branch in a few days.
  13. Josh
    An update is available on the beta branch, which includes the editor and Lua executables, for Windows only. The following issues are resolved:
    http://www.leadwerks.com/werkspace/topic/14934-materials-go-crazy-when-used-on-a-prefab/
    http://www.leadwerks.com/werkspace/topic/15644-latest-43-beta-causes-crawler-to-rotate-at-wrong-direction/
    http://www.leadwerks.com/werkspace/topic/15597-wrong-issues-with-z-sort-materials/#entry104462
  14. Josh
    How do you like that clickbait title?
     
    I implemented analytics into Leadwerks Editor using GameAnalytics.com last month, in order to answer questions I had about user activity. Here's what I have learned.
     
    The number of active users is what I was hoping for. A LOT of people ran Leadwerks in the last month, but people don't usually use it every day, as the number of daily users is lower. The numbers we have are good though.
     
    A lot of people use the Workshop to install models and other items for their projects. Unfortunately, paid Workshop items cannot be purchased right now, as I am working with Valve to change some company financial information. i will have this running again as soon as possible.
     
    Boxes are the most common primitive created, by a huge margin, followed by cylinders, wedges, spheres, and cones, in that order. Maybe the list of available primitives should be rearranged based on this? Not a big deal, but it's interesting to see.
     
    There's definitely a disconnect between user activity and the community, so in the future I hope to encourage people using the program to register forum accounts and become active in the community.
     
    Overall, I am glad that analytics have allowed me to get a broad picture of collective user behavior so I am no longer working blindly. It's a blunt instrument, but it will be interesting to see how I can use it in the future to improve the user experience.
  15. Josh
    I've uploaded a full build of version 4.3 on the beta branch. Version 4.3 will be released in short order and simply contains performance enhancements, OGG support, and bug fixes.
     
    Version 4.4 is due out in the spring and will include the new in-game GUI system. This will coincide with the first Leadwerks / itch.io Game Jam.
  16. Josh
    I've updated the OGG loader with some code from Roberto14 and my own implementation of the ov_open_callbacks() function:
    http://www.leadwerks.com/werkspace/topic/15538-corrupt-or-missing-data-in-bitstream-continuing/
     
    Both Robero14's and MartyJ's code was extremely useful in figuring this out.
     
    This version may load a greater variety of OGG files successfully. Let me know if you find any problems.
     
    Update is for Lua executables, for Windows only at this time.
  17. Josh
    An update is available on the beta branch on Steam. This only updates the compiled executables for Lua, only on Windows.

    Optimization
    I've rewritten the way lights and objects affect each other. In the old mobile renderer it was necessary to store a list of lights that affect each entity, because it was using a forward renderer and had to send the information for the nearest four lights to the object's shader to calculate lighting. This was a complicated task and is not needed with a deferred renderer. 
    The C++ PlayAnimation routine had a bug that would cause the animation to keep updating invisibly, causing shadows to continue rendering when they did not need to be. This is fixed.
     
    I also fixed some inefficiency that would affect point and spot lights, even if their shadows were not being updated.
     
    Finally, I set it so that in medium and low quality lighting modes, only one shadow will be updated per frame, unless the player is close to the shadow volume. This allows you to have many lights updating but only one gets their shadowmap redrawn each frame. This can cause some small visual glitches but the high quality setting (World:SetLightQuality(2)) can be used to always render everything.
     
    Performance Benchmarks (4.3 beta vs 4.1/4.2)
    One more Day: 15% faster
    A Demon's Game: 17% faster
    The Garden: 20% faster
    Vectronic: 23% faster
    AI and Events map: 200% faster

     
    This build should be considered unstable. It will crash on some games.
  18. Josh
    A new build is available on the beta branch. The editor and Lua executables are updated, only on Windows at this time. Everything is updated, including the beta branch of Game Launcher, for Windows and Linux.
     
    I believe I have fixed the crashing in the new light management code. I also added a small optimization that checks if a moved light has the same 4x4 matrix it did at the time of the last shadow render. This makes it so if you are standing still and nothing is moving, the flashlight shadow won't update unnecessarily, even though your code is repositioning it each frame. This is a very small improvement, but I want your games to run as fast as possible.
     
    I've added experimental support for frame limiting. This works by passing a second optional parameters to the Context:Sync command specifying the max framerate. This can be used alone to cap the framerate without VSync:

    context:Sync(false,60)
     
    It can be used to cap the framerate at any arbitrary speed:

    context:Sync(false,90)
     
    Or it can be used together with VSync enabled to cap the framerate and prevent screen tearing:

    context:Sync(true,60)
     
    This is experimental, and may change before the final release of version 4.3.
  19. Josh
    A new update is available on the beta branch on Steam. I've merged the OpenGL2 and OpenGL4 graphics driver classes into a new class called simply "OpenGLGraphicsDriver". Everything should work, but let me know if you find any behavior changes between 4.2 and this new beta.
     
    OGG support has also been added, thanks to MartyJ's help. The following header search paths must be added to C++ projects:
    ..\..\Source\Libraries\libogg\include
    ..\..\Source\Libraries\\libvorbis\include
    ..\..\Source\Libraries\\libvorbis\lib

  20. Josh
    In this blog I want to talk about some cheap and easy ways to give your players a deeper more memorable experience, without touching a line of code.

    Voice Acting
    Games have used off-screen voice actors for years to add character, tell stories, and create a setting with minimal investment. A good voice actor will give enough texture to the backstory that the player will make up the missing pieces in their own imagination. All it takes is a microphone and someone with a nice speaking voice. 



    Hint at what has come before
    Many, many games have scenes set up as the aftermath of what has come before. Graffiti on the walls or gruesome scenes of the remains of carnage are two ways to accomplish this. Hinting at past events visually can be much more powerful than explicitly stating what happened. 


    Logo Design
    If you hunt around, you can get amazing logo design work done on Fiverr.com for next to nothing. You will probably spend more than five dollars, but it will still be insanely cheap. A good logo creates your game's identity, and hints at the possibilities contained within. Again, this is about putting a mood and aesthetic out there, and letting the player's imagination take care of the rest. 

     
    These are three simple things you can do to set your game apart and make a memorable experience that intrigues the user's imagination, without touching a line of code. In fact, any of these techniques could be far more effective than spending weeks coding a new feature.
  21. Josh
    As noted previously, Leadwerks 4.2 now support built-in analytics. To enable this in your game you need to create an account at www.gameanalytics.com and create a new product. You can find your keys on the Game Settings page.
     

     
    At the beginning of the main lua script, some code has been added to initialize analytics. By default this is commented out:

    if DEBUG==false then Analytics:SetKeys("GAME_KEY_xxxxxxxxx", "SECRET_KEY_xxxxxxxxx") Analytics:Enable() end
     
    Uncomment this and insert your game's game key into the first argument. Insert your secret key into the second argument.
     
    The main Lua script has already been set up to record a progress event when the player starts your level, and another when they complete it. Below the initial map loading code, a progress event is sent indicating the player has started the level:

    --Load a map local mapfile = System:GetProperty("map","Maps/start.map") if Map:Load(mapfile)==false then return end prevmapname = FileSystem:StripAll(changemapname) --Send analytics event Analytics:SendProgressEvent("Start",prevmapname)
     
    When a new map is loaded in the game loop, another event is sent to indicate that the previous level was completed, and the new level is beginning:

    --Send analytics event Analytics:SendProgressEvent("Complete",prevmapname) --Load the next map if Map:Load("Maps/"..changemapname..".map")==false then return end prevmapname = changemapname --Send analytics event Analytics:SendProgressEvent("Start",prevmapname))
     
    The FPSPlayer script has a new line of code in the OnDead() function that sends an event indicating the player failed to complete the level:

    if type(prevmapname)=="string" then Analytics:SendProgressEvent("Fail",prevmapname) end

    Viewing Data
    Once your game has accumulated enough data, you can look at your results in the Explore section and clicking on Look up metric. Your progress events will be shown here. 

     
    You can even set up a custom funnel in the gameanalytics.com web interface, which will give you a better visualization of player progress through your game.
     


    Interpreting Data
    If you see a lot of people starting a level, but few are finishing it, it may indicate your game is too hard, or the objective is not clear. If there is a large number of failed attempts, consider reducing the difficulty. If there is just a lot of starts and no completes, maybe the player is just bored. If you see some trouble spots in your game, try making changes, collect new data, and see if your changes improve the user experience. 
    Most importantly, you need a good amount of players in order for any analytics data to be useful. A sample size of 20 is statistically significant, and gives you enough information to make decisions. Analytics will give you objective data and help reveal problems you might not otherwise realize, but you need to have a fun game people like playing in order to collect the data in the first place.
     
    MartyJ was a huge help in figuring the implementation of this out.
  22. Josh
    A new build is available on the beta branch:
    Fixed animation bug found by tumira
    Multiple animations will now be a bit faster.
    Fixed probes not rendering bug found by reepblue

     
    If all is good this will go out on the stable branch this Sunday.
     
    The beta testers have done a great job. Thanks for your help!
  23. Josh
    A release candidate for Visual Studio 2017 was released in November. I took a chance that the final release would be out in December, but it isn't here yet. Releasing Leadwerks 4.2 built with VC 2017 could possibly cause the program to not run on some computers, because the Visual Studio 2017 redistributable is not out yet, and there is no option yet to make this part of the installation on Steam.
     
    Because of this, I am going to release Leadwerks 4.2 for use with Visual Studio 2015, and upgrade to 2017 when the final release is available.
     
    If you have a VS 2017 project, it is easy to downgrade it. Open the solution file and change the VS version to 14:
    VisualStudioVersion = 14.0.0.0
     
    Open the vcxproj file and change the tools version from 15 to 14:
    ToolsVersion="14.0"
     
    Find and replace all instances of "v141" with "v140", save the file, and you're done.
     
    You might even be able to continue using VS 2017 with no changes at all.
     
    If you want to stick with VS 2013, it might be possible to just install the 2015 build tools, but I don't know for sure. If you try it, be sure to let us know your results.
  24. Josh
    A new build is available on the beta branch:
    Fixed character controller physics.
    Added SSR effect in AI & Events maps.
    Renamed "Advanced FPS template" to "FPS template".
    Toned down specular reflection on crawler skin.
    Updated syntax highlighting for new commands.
    Fixed quaternion Slerp function creating nan values with GCC release build.
    Fixed Linux mouse down/hit bugs.

  25. Josh
    Since the community has done their part and we are approaching 100 game, it's almost time to take Game Launcher out of early preview mode make it a full release. When it becomes a full release on Steam the number of people playing your games will go up, a lot.
     
    There are still some odds and ends in the interface to finish up. The thumbnail loading routine needs to be improved. There are some changes that need to be made so it will work better with Big Picture mode. So I am aiming for a release in Spring 2017.
     
    By default, the game launcher will show about 20 games with a "Staff Pick" tag. The full library of games will still be viewable by selecting the list item in the categories list. I want to make sure new players try the games first that will give them the best experience, and keep them coming back for more.
     
    There are also a few non-working games that will be removed from the Workshop if they are not updated. Games will only be removed if they don't start, or if they are loading the default starting map accidentally.
     
    The "Staff Pick" games are the showcase of what the Leadwerks community can create, and will get more players. They are being selected based on the following criteria.
     
    Playability
    Is the game fun?
    Is the objective clear? Does the player know what to do?
    Is there a place in the game where most players will get stuck?

     
    Performance
    Does the game load quickly and run fast?

     
    Graphics
    Does the game look good?
    Is it using decent-looking assets or programmer art?

     
    I hope that pushing simple games with high replay value to the front will result in people trying more games.
×
×
  • Create New...