-
Posts
4,816 -
Joined
-
Last visited
Content Type
Blogs
Forums
Store
Gallery
Videos
Posts posted by AggrorJorn
-
-
Very cool. What kind of game are making?
-
For this reason (and a whole bunch more) I use vs code.
-
Still, this kind of stuff should work right out of the box right? The amount of time you lose and the frustration this brings. I can imagine this would drive people away from C++.
- 1
-
Use GetMousePosition() and then the Z axis for the mouse wheel. https://www.leadwerks.com/learn?page=API-Reference_Object_Window_GetMousePosition
Very nice btw, I never could get NoesisUI to work properly.
-
- 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.
-
Can't find it either. This is the old documentation:Here: https://www.leadwerks.com/learn?page=API-Reference_Object_PickInfo
- Vec3 position
- Vec3 normal
- Entity* entity
- Surface* surface
- Face* face
- int triangle
- Mat4 mat
- 1
-
-
Little video demonstrating it:
- 3
- 1
-
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
- 1
- 2
-
I think I have something that fits your need. Will post the code + example when I get home.
it will allow you to setup your input like this:
--config setup virtualKeys["forward"] = { primaryKey = "W", secondaryKey = "Up" } --usage if input:KeyHit("forward") then --profit end
-
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.
-
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.
- 1
-
Regarding the topic subject: I used Udemy for the first time and I must say that I like their site a lot. I also have a pluralsight account from work, which reminded me of the course layout. So udemy would be pretty good to consider as well when I get back to a tutorial project.
-
I like your suggestion Rick. Still, I think lua files should not be updated in general. How often has the FPS player script changed throughout the years? This is what broke Project Saturn eventually.
- 1
-
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.
-
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.
-
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:
- 1
-
I have decided that I will not be making the kickstarter for the time being. There just seems to be too little activity for it to be worth it. I will try again with Leadwerks 5 (or the new name).
Thanks for your feedback.
- 1
-
Very nice. Is calling the garbage collector something we will have to do or is this handled internally?
-
Do you get the desired result when the Sleep() function is commented out?
What is the output of this added line:
context->DrawText("Gravity: "+String(vy), 10, 50);
-
I added a massive amount of generated snippets based on the Leadwerks API. Video and more details here:
-
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.
-
Generating the lua snippets brings up several issues with the toc. The lights and probe API are placed inside the camera.
-
1 hour ago, Josh said:
I'm not very motivated to work on that right now since I would then have to grant permissions to specific people and still manually update the website, and it's just a lot of time fiddling around with web stuff.
Maybe at a later stage perhaps. For now I will use https://www.leadwerks.com/documentation/toc.xml to retrieve the latest xml and generate the snippets.
LeadWerks 5
in General Discussion
Posted
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.