Jump to content

AggrorJorn

Members
  • Posts

    4,816
  • Joined

  • Last visited

Posts posted by AggrorJorn

  1. Why do people pledge for kickstarter games when they are not playable?

    Because they want to support the development process and perhaps get insider knowledge that you otherwise don't get to know.

    • In the root of your project you can find a 'YourProjectName.werk' file were you can edit Author name etc. 
    • In the root of your project you can find a 'thum.jpg' that has your games icon for the project manager.
    • To replace the ico of your exe, you can use an installer tool (for example www.jrsoftware.org/isinfo.php). But you can also edit it directly. I would just google that last option since there are various ways to do this.
  2. I have been using my own Input manager for several years now. From time to time a project would require some custom tweaking, so I made a new clean version which should suit your requirements.

    • keyboard and mouse hit and down 
    • key can be queried multiple times per frame
    • Virtual keys with primary and secondary function (W and Up for instance)
    • Other userfull functions

    Here you can find the source code: 

    1. Download the script and put it somewhere in your scripts folder. My example uses Scripts/Input/input.lua

    I use main.lua to import it. Add this to your main lua: 

    import "Scripts/Input/input.lua"

    Before the main loop add the following:

    input = Input:Create() -- I like input as a global variable, since you use it in many places
    input:SetVirtualKey("RocketBoost", "Tab", "R") -- Add custom virtual key
    input:DebugVirtualKeys() --prints all existing virtual keys to the screen

    In your main loop you can now do these things:

    if input:VirtualKeyHit("RocketBoost") then System:Print("ROCKETBOOOSTING using Tab or ALt") end
    if input:KeyHit("E") then System:Print("E hit") end
    if input:KeyHit("E") then System:Print("E hit second time") end
    if input:KeyDown("Q") then System:Print("Q down") end
    if input:MouseHit("LButton") then System:Print("Left mouse button click") end
    if input:MouseDown("MButton") then System:Print("Middle mouse down") end
    if input:VirtualKeyHit("Jump") then System:Print("jump hit") end
    if input:VirtualKeyDown("Forward") then System:Print("moving forward using W or Up arrow") end

    By default there are a couple of Virtual keys (just like you were used in Unity). You can either change the input.lua script or add/overwrite with the SetVirtualKeyCommand()

    obj.virtualKeys["Forward"] =        { primaryKey = "W",         secondaryKey = "Up" }
    obj.virtualKeys["Backward"] =       { primaryKey = "S",         secondaryKey = "Down" }
    obj.virtualKeys["Left"] =           { primaryKey = "A",         secondaryKey = "Left" }
    obj.virtualKeys["Right"] =          { primaryKey = "D",         secondaryKey = "Right" }
    obj.virtualKeys["Jump"] =           { primaryKey = "Space" }
    obj.virtualKeys["Use"] =            { primaryKey = "E" }
    obj.virtualKeys["Fire"] =           { primaryKey = "Lbutton" }
    obj.virtualKeys["SecondaryFire"] =  { primaryKey = "Rbutton" }
    obj.virtualKeys["SpecialFire"] =    { primaryKey = "Mbutton" }

    Some other usefull functions for in your game loop:

    if input:Any() then System:Print("Any input detected. So keyboard or mouse.") end
    if input:AnyKey() then System:Print("Any keyboard input.") end
    if input:AnyMouse() then System:Print("Any mouse input detected (besides movement)") end

     

     

    • Like 1
    • Upvote 2
  3. 18 minutes ago, Gonan said:

    So please comment on your best practice, and how you minimise the rework required after project updates.

    This is my work method for the past 5 years:

    • Try to stay away from default lua scripts were possible. If you need a script, lets say the fpscontroller.lua, make a copy and use that.
    • Use source control like git or mercurial. Make sure you have no changes and then do a project update.
      • You can then easily identify changes in files that you do want to included (dll's, shaders)
      • You can then easily identify changes in files that you do not want (main.lua,  fpscontroller.lua) and simply revert the changes from your source control manager.
        • This way you also quickly find any changes to your lua files.

     

     

  4. All valid points Rick. On the other hand I agree with Josh: the game loop in its current state is what I always have found attractive about Leadwerks. Here is your base game loop and adjust the way you want it. 

    I think making these kind of changes while Leadwerks 4.x is in the final stage would be a bit late. Maybe something to consider for Le5.

    • Upvote 1
  5.  

    2 minutes ago, Josh said:

    So you're saying it should just update shaders, EXEs, and DLLs, and nothing else?

    Thats is what I would choose. Like in @Gonan suggestion, the most common issue is that the lua files have been changed by a user.  Both beginners and advanced lua users will tinker with main lua and the default scripts that come with a new project. 

  6. I think skipping lua files from updating a project is the easiest/quickest to implement. If a person wants an updated main.lua (or any lua file), model, material, he just needs to create a new project and copy it over from there to his original project. Shaders seems like something that most users will never touch and could still be updated imo.

  7. The problem with this, is that you are spending time working around a problem that should not be happening in the first place. Since main.lua is always the start file (unless you work with entity scripts only) you will always face the problem of it being replaced with a new version.

    Have a look at this 4 year old topic: 

     

     

    • Upvote 1
  8. Thanks for the reply klepto. Interesting to know it inherits. It makes sense for methods like SetRange, but there are also many camera specific methods that have nothing to do with lights like Zoom and SetSkybox. Are there inherited by the Light and probe?

    I currently process the entire toc.xml because I need more than just the classes. For instance I want to display available subclasses and methods.

×
×
  • Create New...