It should be possible for people to "protect" their mod if they dont want other people to mess around with it.
I don't think it has been mentioned how mods for FP will be distributed. Will you use Steam Workshop, your own mod registry or is UWE not bothering with that at all.
I think every mod should have its owner mentioned in some registry to prevent other people from "ripping off" someones work. In WC3 this happened a lot, maps just got reworked and published as version+1 with a new creator, leading to mappers corrupting realeases of their maps in order to mess with the map editor so they can't be edited by others.
I think everyone should be able to inspect a mod and reuse its content in their own mod. One should not however mess with an already existing mod, and republish it as his work. After all, it is possible to crack these file-based protection mechanisms anyways. Afaik most content creators don't have any problems if work they publish for free gets used in the work of another artist, as long as proper credit is given.
Soul_RiderMod BeanJoin Date: 2004-06-19Member: 29388Members, Constellation, Squad Five Blue
Mods will be distributed through the steam workshop, as they are now.
Any code released through the steam workshop, as it is lua based, is basically open-source anyway.
I have absolutely no objections if anyone modifies my work, as long as credit is given, I am purely talking about from the perspective of making a mod game mode that you want people to be able to play without the server host being able to edit the game in real-time play.
My mods should be able to be opened in the editor freely by anyone and changed as they see fit, however, when playing my version of the game, I do not want anyone to be able to edit it at 'run-time'
I spent the morning going through your list, which was really helpful. All of the things I mentioned as fixed will be in the "beta" Steam branch tomorrow.
53. Q: >game.exe -build_assets C:\test\< just builds assets and exits. that is intended behavior, right? what's the parameter to set the assets build dir during gameplay? and is it possible to change the assets source dir?
That is the intended behavior. This isn't really intended for players to use; we use it as part of our build process for deploying the game. You can change the source assets directory with -documents_path.
54. Remark: input fields are missing some standard interactions (tab switch, copy, paste, select all, highlight on focus)
Added to our list (though Paste should be working, though in some ways limited by selection).
55. Bug: cursor not visible when input bigger than input field
Added to our list.
56. Bug: crash when resizing controller radius/height to zero -> catch error and/or limit slider range
Fixed.
57. Remark: unclear why controller comes bundled with the controller volume, which is in it's effect a collsion volume
This is for simplicity in the use and the implementation. Right now it's based off of the PhysX character controller which is limited to a capsule shape. We might move away from that, but limiting the controller's shape makes it easier to do things efficiently.
58. Bug: Script Error Icon is not removed when the respective script component is deleted
Added to our list.
59. Bug: (?) Player Spawner - Setting Player Blueprint to Mine or Alt_Coin crashes the game
Fixed.
60. Bug: labels are rendered in front of component editor and menu
Fixed.
64. Feature Request: Key inputs (i.e. Action.Use, Action.PrimaryAction) are easy to find out, but should be documented. also, doesn't this limit the number of keys to 32 or so?
Noted. I think documentation is one of the big areas that we need to address right now.
65. Bug: move and rotate gizmo don't work on objects which have collision physics enabled (in play mode)
Fixed.
66. Feature Request: way to print sth to console, that does not print into log. Printing something often, i.e. velocity of a moving object, creates a lot of output I dont necessarily want to bother my poor SSD with.
We're building out a debugging UI which sounds like a good place for this functionality to live. Thanks for the input.
67. Remark: there is no Self_GetAngles, only Self_GetLocalAngles. Coords and Position have both variants. Not that I know what it would return, but symmetry is nice.
68. Feature Request: ability to place Controller/Trigger Box relative to model
We've had some debates on this one internally. Hearing an outside opinion is useful.
69. Bug: (?)
local controller = Self_GetComponent("Controller")
local loadTime = World_GetTime()
function OnThink(message)
if controller ~= ComponentId_Invalid and World_GetTime() - loadTime > 2 then
Controller_Move(controller, Vec3(0.5,0,0) , message.deltaTime, true)
end
end
moves entity (model + controller + script) in x-dir, but when a collision component is added, the object moves diagonally (x-y). Probably to be ignored as I didn't call Player_SetControlledEntity in before.
Calling SetControlledEntity shouldn't be necessary for it to work (for example, you could use this on an AI). This sounds like it might be caused by the controller colliding with the collision component.
70. Q: Complete list of all functions called by the game? My list so far:
OnThink - called every 1/30th sec
OnCreate - called once when entity is created (after game start)
OnDestroy - called once when entity is destroyed
OnTrigger - called on enter/exit of trigger box through trigger component
OnTimer - called repeatedly after specified interval through timer component
OnInput - called on key press/release through controller component
OnView - called on mouse movement through controller component
OnHud - ?
OnGravity - ?
OnPlayerJoin - called once when a player joins (after game start)
Execute (Automator only) - called when sth changes (?)
Shutdown (Automator only) - ?
That's the complete list, with the exception of OnGravity and Shutdown, which aren't called by the engine.
71. Q: Should I be able to add a package to its own package list? I am not 100% sure, but I think that is what caused an error were others were unable to join the game
No, that sounds like a bug. I'll look into it.
72. Q: What does "Find Packages" filter for? searching for "mine" yields "Rocket Science" - unexpected
For locally installed packages it's searching the text in the title and description (for Rocket Science it's matching "determine" in the description). For Steam packages it's invoking the Steam search functionality which I believe does something similar. I've improved our search so it only matches on the start of a word instead of anywhere inside the word which should make it behave more as you'd expect.
73. Bug: different blueprints with the same name show only up once. maximum confusion as it depends on the loading order which can not be manipulated ingame. I.e. there exists shooter/shooter/spawners/player_spawner.blueprint (which gives you a railgun by default) and spawners/spawners/player_spawner.blueprint (all fields empty). importing spawners after shooter gives only access to the empty one. unless you import avatar after that, as that imports shooter again.
74. Remark: Dependencies need to be cleaned up. I.e. spawners package loads vertigo but does not really depend on it (as far as i see). Or alt_coin imports avatar and vertigo, just because it comes with a world, which it does not really need. better create "Tutorials: Alt Coin" as a separate world. also implicit imports are not easy to follow, i.e. the reason "mine" is available is because the "shooter" package imports it, "avatar" implicitly imports "railgun", everything at some point imports "vertigo", etc.
Added to the list.
75. Bug: renaming a .model file makes it unusable, i.e. mv a.model b.model (?)
If you rename the .model file, the build system might automatically delete it since there's no corresponding source file (i.e. fbx) for it. Basically you're not expected to ever touch those files, and instead you'd rename the fbx.
76. Q: Is there a way to detect when a collision geometry has collided with something? I.e. if I were to write a script that counts how often an entity colided with a wall or changes a skin on each collision. There is no OnHit or OnCollision, triggers come only box shaped, I can only check Overlap for boxes, spheres and rays, and Self_AddCollisionComponent doesn't have a callback. So how can I do it?
Added to the list. You should be able to change the shape of the trigger to accomplish this (they're not limited to boxes), but a dedicated message for the collision component would be nicer.
local controller = Self_GetComponent("Controller")
local loadTime = World_GetTime()
function OnThink(message)
if controller ~= ComponentId_Invalid and World_GetTime() - loadTime > 2 then
Controller_Move(controller, Vec3(0.5,0,0) , message.deltaTime, true)
end
end
moves entity (model + controller + script) in x-dir, but when a collision component is added, the object moves diagonally (x-y). Probably to be ignored as I didn't call Player_SetControlledEntity in before.
Calling SetControlledEntity shouldn't be necessary for it to work (for example, you could use this on an AI). This sounds like it might be caused by the controller colliding with the collision component.
I was kind of lead to believe that "controller" is for actively controlled entities only, as moving_robot.lua doesn't use it, while moving_player.lua does. Additionally I regularly get "Moving controller before it was created" errors (ComponentControllerManager.cpp:165) when trying to move controllers (despite my 2 second offset). Thought that was because they have no player attached.
77. Remark: Should there be an error message when applying Collision_AddForce to a collision which has physics disabled?
78. Bug: vec3.lua: Had this listed as bug, but there is a chance it is intentional. Although it is not immediately clear what multiplication of two vectors should return, right now __mul returns the addition of both vectors, which I feel is never the intention. Also v*v = 2*v = v+v just looks wrong. I think it should return either of the following
79. Remark: color.lua: it's nice to see named colors there, but why only these? I attached a lua file for all named HTML/CSS colors, note however that there are slight differences, most notably green is (0,.5,0) and the bright (0,1,0) is named lime. (btw: forum should allow upload of .lua files)
80. Bug: .jpg is supported but .jpeg is not
81. Remark: the floor asset should be located below it's origin. right now, when you drop an entity on it, it is placed IN the floor
82. Remark: created an avatar, but accidentally it was facing right. rotating the model to face forward also rotated the controller. could only solve this by rotating the model in the fbx file
83. Remark: edit blueprint, change position of bone -> does not snap
84. Bug: slight glitches for Collision_AddTorque(collisionId, Vec3(200,200,200))
link
my best guess is, that a high angular velocity yields values for pitch that are outside of [-pi/2,pi/2], causing a reorientation of yaw and roll during one frame
85. Remark: as seen in the video, the angular velocity is slowing down over time. Is this really necessary? Would prefer if the angular momentum would be preserved. I.e. to create a spining hovering pickup item, you would add torque after creation and never think about it again.
86. Bug: clicks on checkboxes of blueprints (i.e. room or stack) sometimes (most of the time) don't trigger
Edit: regarding #69, Max was right. The controller is bumping against the collision mesh, when it is of type solid or similar (not hitbox and ghost). Kind of limiting.
Is it possible that the slow down in velocity over time is due to the re-orientation that occurs?
It seems like the axis are flipping briefly, so in frame by frame velocity calculations, there would be a frame or two each rotation where momentum is in the opposite direction, which could cause the slight slow-down experienced.
Good point. I tested this by rotating around (0,1,0), so only yaw was changing (yaw wraps smoothly), still I see the slowdown. I guess it's just some damping that is added so certain phyics dont run out of control (€: or to simulate air friction).
Soul_RiderMod BeanJoin Date: 2004-06-19Member: 29388Members, Constellation, Squad Five Blue
Fair Enough, hopefully we'll get some documentation up about how to control this kind of thing, or if it is not available yet, hopefully it will get added
77. That is a good question. I don't think an error should be displayed in this case. It is just a null operation. The same is true for toggling the visibility of a model component that doesn't currently have a model set. There is a question of what should happen to the collision when physics is reenabled.
78. I'll pass your suggestion along to the team.
79. Thanks! I am going to integrate your changes while still maintaining backwards compatibility with the exception of green which will be 0, 0.5, 0 as in the standard.
80. Added to the list! Should be simple.
81. This is an interesting one. I'm surprised where the origin is matters here. I'll investigate.
82. I think you solved this the correct way unless I am misunderstanding.
83. I don't fully understand. The bone isn't snapping? I don't think bones usually snap to anything.
84. Added to the list!
85. This is controlled by angular damping. There is no API for that yet but it can be controlled in a model's build options file. There will eventually be an editor to control this. I'll add a task to expose it to the API.
86. Ah! I never noticed this somehow. I guess I just got lucky. Added. Thanks.
We changed the vector multiply operator to just multiply the two vectors together.
I noticed that darkGrey = 0.66, 0.66, 0.66, 1.00 in your example. That seems relatively light for a dark grey but I assume that is just how it is defined in the standard.
I also noticed you copied all the greys with the alternative gray spelling. Is that part of the CSS standard too?
Yeah, I noticed darkGray too. It's even lighter than gray. I guess if you need a darker one, you need to go for dimGray. Took the colorcodes from the official site, so that is just the way it is. Don't question it.
I added the grey spelling (as well as the 'none' color and the lower case first character) to be compatible with the existing color.lua. It's not part of the spec, but i.e. in latex, packages often come with an option to enable the alternative spelling, so I figured it couldn't hurt.
Edit: turns out the CSS3 spec is actually based on the SVG spec, which supports both spellings of gray. SVG on the other hand is based on the X11 colors, which explains the darkGray issue
Regarding 82, I was just not aware that a model should have a certain orientation. Was a minor annoyance as i tried to rotate the model and the camera a couple of times until I realized that sth was wrong on a more fundamental level. There could be a rotation specified in the model build options, but that would probably be over the top.
Regarding 83, I just wanted to point out that bones do not snap to a grid, while everything else does. If consistency of the UI is a top priority, this may need to be adressed. I think it can stay as it is.
Regarding 82, I was just not aware that a model should have a certain orientation. Was a minor annoyance as i tried to rotate the model and the camera a couple of times until I realized that sth was wrong on a more fundamental level. There could be a rotation specified in the model build options, but that would probably be over the top.
There already is a rotation in the model build options.
87. Feature Request: start game should have the last played mod preselected (tricky, when last mod is no longer available)
88. Q: From looking at external_ffi.lua, I can tell that 'WorldHit' has members hit.position, hit.normal, hit.entityId, hit.distance. Since it is no table, I cannot traverse it with pairs(),next(),etc. Is there a way to obtain a list all members with a command?
89. Bug: (?) entity with enabled physics that is attached to another entity is destroyed on game start. should just disable physics
90. Remark: Printing entityIds to console gives strange values, since entityId is of type double. shouldn't it be long long instead? would expect an id to be integer, not floating point. (yeah i know about EntityId_ToString)
91. Q: Speaking of EntityId_ToString, what is the 'use' field of an entity and under which circumstances does it count up?
92. Bug: Coords.GetIdentity(offset) should be Coords.GetIdentity() or make use of the argument
93. Remark: label supports 4.5 lines of text. better 5?
94. Feature Request: colored text in labels, i.e. to color names in team color or print x,y,z in their respective color
95. Q: If entity has the player tag, label text *name* is replaced by the player name. How does that work? What part is responsible for this? Are there more keywords?
96. Remark: dont see the description text of a 'Descriptor comment' anywhere. script_markup.html outdated?
97. Remark: When you uncheck the package's "playable" checkbox and exit, it is kind of difficult to go back (only by manually editing the package.info).
98. Remark: Not 100% sure but I think it is not possible to publish an item without publishing a .world file with it.
99. Bug: After a couple of changes in the build_options file (i.e. change scale to some different values), the game crashes reliably.
100. Bug: If you rename a script from a.lua to A.lua, the change is not reflected properly in the build dir. Has the confusing effect that changes in the script are recognized, but do not carry over.
102. Feature Request: Self_SetName(), possibly also Entity_GetName(id) (<- risky, people might be tempted to use that instead of the getTag mechanism)
103. Bug: Entity_GetTag(entityId, i) crashes the game for any i bigger than NumTags. Most notably in the case where there are no tags. I know, I am supposed to check the range beforehand, still it shouldn't crash. Also tags are 0-based where others such as World_TestRayOverlap are 1-based.
104. Feature Request: Self_AddLabelComponent() should take a parameter for the vertical offset.
105. Feature Request: I have two instances of the same model, and would like to separate them through different color tinting. Would be awesome if I could just set a color by script, instead of going through the tedious process of creating a new skin. I have no clue if this is even compatible with the rendering pipeline.
106. Remark: I see that the context of Entity_GetComponent is restricted to automators. I suspect the reasoning is, that every entity is only manipulated by it's own scripts. In my case, my entity has a child entity which only has a label component (this way I have better control of the label placement), and i don't really want to create another script just to set a label text.
107. Bug: Package description text does not allow multiple lines; "\n" is printed literally, line breaks cause a parsing error. When you want multiple lines, you need to check steam after publishing and change the description manually, which is annoying.
109. Remark: Quaternions are missing some fundamental methods, most notably multiplication. I have written my own (attached to this post). Also contains a fix for the next issue. I have not yet managed to manipulate any metatable, therefore if you decide to adopt these, you need to replace the first arguments with 'self' (where applicable), rename the methods and add __mul, __len, etc yourself. Have only made brief checks that everything behaves in a benign fashion for left-handed/mirrored Coords (don't really care about these).
I also attached a proposal for a simplified way to handle rotations, as Euler angles have their pitfalls and quaternions are a little bit too abstract.
110. Bug: Quat:GetEulerAngles() is wrong, in more than one way. I guess you used this conversion. The first error is due to the (imho strange) convention to write the quaternion as (x,y,z,w) instead of (w,x,y,z). Therefore you erroneously identified q_0 with x instead of w. But even then, it is still the wrong formula, as it is for a Z-Y'-X'' rotation (in a coordinate system where Z is upwards, see #18), while you use a Y-X'-Z'' rotation. Then it should return an Angles() object instead of 3 numbers. Lastly it should be named GetAngles() to be consistent with the other methods that use Euler angles.
111. Feature Request: World_GetPlayTime() - Time since the current round was started.
112. Remark: Accidentally made a selection of a moving and a stationary object. Had the funny effect that when you hold the gizmo the stationary object starts moving, and when you release it the other one moves.
113. Feature Request: Collision_AddLocalTorque(v) to rotate around the body's axes instead of global ones
Another great list @Brute. This is truly wonderful feedback for a programmer.
87. Feature Request: start game should have the last played mod preselected (tricky, when last mod is no longer available) We're planning on doing something like this soon.
88. Q: From looking at external_ffi.lua, I can tell that 'WorldHit' has members hit.position, hit.normal, hit.entityId, hit.distance. Since it is no table, I cannot traverse it with pairs(),next(),etc. Is there a way to obtain a list all members with a command? There's no way to get the members. We're going to have proper documentation on all of this (hopefully soon). The members you see in external_ffi.lua are all of the members though.
89. Bug: (?) entity with enabled physics that is attached to another entity is destroyed on game start. should just disable physics I'm guessing it probably is exploding (the entity is flying off into space). I'll look into making that not happen.
90. Remark: Printing entityIds to console gives strange values, since entityId is of type double. shouldn't it be long long instead? would expect an id to be integer, not floating point. (yeah i know about EntityId_ToString) The strangeness of the entity id storage is a concession to improve performance, since storing it as a 64-integer requires it to be cdata in luajit. What you're seeing is the bits of the 64-bit integer reinterpreted as a 64-bit double. Maybe we'll find ways to make this better in the future.
91. Q: Speaking of EntityId_ToString, what is the 'use' field of an entity and under which circumstances does it count up? The "use" part of an entity id is the number of times the entity "index" has been reused. The entities are stored in an array, and when an entity in one slot is destroyed, the slot will get reused by a new entity. Tracking the use count allows us to tell if an entity id refers to what is in the slot now, or something that was destroyed.
92. Bug: Coords.GetIdentity(offset) should be Coords.GetIdentity() or make use of the argument Fixed (the parameter shouldn't be there).
93. Remark: label supports 4.5 lines of text. better 5? That sounds like a good idea, I'll look into it.
94. Feature Request: colored text in labels, i.e. to color names in team color or print x,y,z in their respective color Do you have thoughts on how this would work? Special keywords in the label?
95. Q: If entity has the player tag, label text *name* is replaced by the player name. How does that work? What part is responsible for this? Are there more keywords? The label component does it in the engine. Right now that's the only keyword.
96. Remark: dont see the description text of a 'Descriptor comment' anywhere. script_markup.html outdated? The documentation was correct, but the comment was never displayed anywhere. I've added it as a tool tip for the script fields in the editor.
97. Remark: When you uncheck the package's "playable" checkbox and exit, it is kind of difficult to go back (only by manually editing the package.info). You should still be able to load it from in the editor. I'm going to be reworking some of the UI related to loading worlds and packages to make this better though.
98. Remark: Not 100% sure but I think it is not possible to publish an item without publishing a .world file with it. This is intentional, since you might have something that's just a collection of assets that you're publishing for other people to use.
99. Bug: After a couple of changes in the build_options file (i.e. change scale to some different values), the game crashes reliably. I'll try to reproduce this, but if you have specific steps that would be helpeful.
100. Bug: If you rename a script from a.lua to A.lua, the change is not reflected properly in the build dir. Has the confusing effect that changes in the script are recognized, but do not carry over. I've added a task for this.
102. Feature Request: Self_SetName(), possibly also Entity_GetName(id) (<- risky, people might be tempted to use that instead of the getTag mechanism) We can definitely add Self_SetName. I'll have to think about the other one though.
103. Bug: Entity_GetTag(entityId, i) crashes the game for any i bigger than NumTags. Most notably in the case where there are no tags. I know, I am supposed to check the range beforehand, still it shouldn't crash. Also tags are 0-based where others such as World_TestRayOverlap are 1-based. You're right, these functions should never crash, even with bad input.
104. Feature Request: Self_AddLabelComponent() should take a parameter for the vertical offset. I've added Label_SetVerticalOffset/Label_GetVerticalOffset.
105. Feature Request: I have two instances of the same model, and would like to separate them through different color tinting. Would be awesome if I could just set a color by script, instead of going through the tedious process of creating a new skin. I have no clue if this is even compatible with the rendering pipeline. This (and much more!) will be possible in the future when we expose the full capabilities of the material system.
106. Remark: I see that the context of Entity_GetComponent is restricted to automators. I suspect the reasoning is, that every entity is only manipulated by it's own scripts. In my case, my entity has a child entity which only has a label component (this way I have better control of the label placement), and i don't really want to create another script just to set a label text. Yes, it's restricted so that entities don't know/care about the internal structure of other entities. Sometimes it does feel a little convoluted if you just want to do something simple. We've considered having different forms of parent/child relationships between entities to model the difference between your stomach being attached to your body (it's a part of you) and a cup being attached to you (you're holding it). In the former case you would have full access to the attached entities. We haven't decided if this is a good idea and/or worth doing yet though.
107. Bug: Package description text does not allow multiple lines; "\n" is printed literally, line breaks cause a parsing error. When you want multiple lines, you need to check steam after publishing and change the description manually, which is annoying. Once I implement a multi-line text edit box we'll have this. You should be able to use line breaks in the package.info file if you use this syntax description = [[First Line
Second Line]]
109. Remark: Quaternions are missing some fundamental methods, most notably multiplication. I have written my own (attached to this post). Also contains a fix for the next issue. I have not yet managed to manipulate any metatable, therefore if you decide to adopt these, you need to replace the first arguments with 'self' (where applicable), rename the methods and add __mul, __len, etc yourself. Have only made brief checks that everything behaves in a benign fashion for left-handed/mirrored Coords (don't really care about these).
I also attached a proposal for a simplified way to handle rotations, as Euler angles have their pitfalls and quaternions are a little bit too abstract. Thanks, I'll check it out.
110. Bug: Quat:GetEulerAngles() is wrong, in more than one way. I guess you used this conversion. The first error is due to the (imho strange) convention to write the quaternion as (x,y,z,w) instead of (w,x,y,z). Therefore you erroneously identified q_0 with x instead of w. But even then, it is still the wrong formula, as it is for a Z-Y'-X'' rotation (in a coordinate system where Z is upwards, see #18), while you use a Y-X'-Z'' rotation. Then it should return an Angles() object instead of 3 numbers. Lastly it should be named GetAngles() to be consistent with the other methods that use Euler angles. I'll dig into this. The Lua code is ported from the C++ code in the engine which is used for the rotation editing field.
111. Feature Request: World_GetPlayTime() - Time since the current round was started. This is should be what World_GetTime() returns, but I see that it may be wrong when switching in and out of the editor.
113. Feature Request: Collision_AddLocalTorque(v) to rotate around the body's axes instead of global ones[/quote] Added.
89. Bug: (?) entity with enabled physics that is attached to another entity is destroyed on game start. should just disable physics I'm guessing it probably is exploding (the entity is flying off into space). I'll look into making that not happen.
The OnDestroy Method is called, even when there are no Gamebounds. So I figured it is not just flying away.
94. Feature Request: colored text in labels, i.e. to color names in team color or print x,y,z in their respective color Do you have thoughts on how this would work? Special keywords in the label?
I thought of predefined colors and keywords in the labeltext, yes. Something similar to what others have:
The first two will probably do it and are easy to implement. Just choose a control character (*,@,/,\,$,§,<,>) and parse the next character. If you want to go the extra mile: there are 140 named colors. So one byte (00-FF) is enough to adress all of them.
98. Remark: Not 100% sure but I think it is not possible to publish an item without publishing a .world file with it. This is intentional, since you might have something that's just a collection of assets that you're publishing for other people to use.
I don't understand. If I want to publish only a collection of assets, why would I want to publish an additional .world file with it, that just clutters the asset browser?
99. Bug: After a couple of changes in the build_options file (i.e. change scale to some different values), the game crashes reliably. I'll try to reproduce this, but if you have specific steps that would be helpeful.
Had a little bit of testing. Apparently the game must be started and running (with game I mean the round not the program), the model must have a collision attached and physics must be enabled. Changing scale a couple of times causes a crash. If you have trouble reproducing it, I make a video or send you the crashdump.
111. Feature Request: World_GetPlayTime() - Time since the current round was started. This is should be what World_GetTime() returns, but I see that it may be wrong when switching in and out of the editor.
World_GetTime() returns the time since the world was loaded. If i stop the current round (Shift+F5), that time keeps going. I want the time that counts from the moment I start the game/round again (F5). I can calculate it with "local loadTime=World_GetTime(); function World_GetPlayTime() return World_GetTime() - loadTime end", given that that script was spawned with the game start.
98. Remark: Not 100% sure but I think it is not possible to publish an item without publishing a .world file with it. This is intentional, since you might have something that's just a collection of assets that you're publishing for other people to use.
I don't understand. If I want to publish only a collection of assets, why would I want to publish an additional .world file with it, that just clutters the asset browser?
Ah, I misread what you originally wrote and thought you were saying it was not possible to publish a package without a world.
> "xyz.lua: Field 'print' has invalid markup"
Something similar happens for
----------------------------------------------------------------------------
-- build target coordinate system
----------------------------------------------------------------------------
local targetCoords = Coords()
but not for
-- --------------------------------------------------------------------------
-- build target coordinate system
-- --------------------------------------------------------------------------
local targetCoords = Coords()
Not sure if it's worth fixing it.
115. Q: I am trying to make sense of some numbers associated with Collision_GetLinearVelocity, Collision_GetAngularVelocity, Collision_AddForce, Collision_AddTorque, but I could use some help.
If I call Collision_AddForce(collisionId, Vec3(60,0,0)), then Collision_GetAngularVelocity will report a velocity of (1,0,0). The scripting guide mentioned that units are in meters, so I assume SI units everywhere, meaning that the force F is 60N and the velocity v is 1m/s.
Now if I calculate v=1m/s=p/m=Int F dt/m = 60kg m s^-2 * deltaT / m that results in deltaT / m = 1/60 s/kg. So either the force acts for deltaT=1/60th seconds on a 1kg mass or the mass is 2kg at 1/30 s (or anything in else which results in 1/60). If the first case is true (the physics simulation runs on 60Hz despite the scripts being called at 30Hz), that would mean that the actual forces need to be doubled, i.e. gravity=20 instead of 10 (or 19.6133 instead of 9.80665). And indeed a higher gravity looks more realistic and gives the same behavior as enabling gravity through the collision's checkbox.
Now what really confuses me are the measurements that I made. For the case that GetLinearVelocity returns a velocity of 1, the object is actually moving at 0.5m/s. So what is going on?
Angular velocity has the same issue + that it appears that torque is given in degrees instead of radians, i.e.:
Collision_AddTorque(collisionId, Vec3(360,0,0)) yields an angular velocity of 6 (not 2pi but 360/60) and measurements indicate a rotation of 180° per second.
98. Remark: Not 100% sure but I think it is not possible to publish an item without publishing a .world file with it. This is intentional, since you might have something that's just a collection of assets that you're publishing for other people to use.
I don't understand. If I want to publish only a collection of assets, why would I want to publish an additional .world file with it, that just clutters the asset browser?
Ah, I misread what you originally wrote and thought you were saying it was not possible to publish a package without a world.
It's funny, because that is what I was actually saying
There are a couple of issues associated with the new color picker, but I guess it's to early to bring them up, right?
Since the mass and the center of mass are now taken into account (yeah!), let me reformulate #115 as the numbers have changed now:
Forces are fine now. Repeatedly calling Collision_AddForce(collisionId, 9.81 * mass * message.deltaTime * gravityDirection) gives the same behavior as enabling gravity through the collision component. Technically that's a momentum and not a force, but I can live with that. Directly specifying momenta instead of forces makes many things even easier.
The units of Collision_GetLinearVelocity are still unclear: When calling Collision_AddForce(collisionId, Vec3(1*mass,0,0)) exactly once, the object gains a velocity of 1 (that is Collision_GetLinearVelocity(collisionId).x==1). I assume this means 1m/s (would be consistent with the findings above). However measurements indicate that the object actually moves at 0.5m/s. Even more confusing this number seems to be FPS dependent. I measure how often a script is called per second. In the beginning, this number is close to 30, but after running the game for some time, this drops as low as 15. If this happens, the actual velocity is roughly divided by 2, too.
Similarly, if Collision_GetAngularVelocity(collisionId).x is 2pi, the measurements indicate a rotation of 180°/s, so there is a factor 2 missing again.
116. Feature Request: A method that returns the mass of an object/collision. Right now I determine this number by hand: call Collision_AddForce(collisionId, Vec3(1,0,0)) and use mass=1/Collision_GetLinearVelocity(collisionId).x.
117. Feature Request: A method that returns the position of the center of mass. Really need this so I know where to (symmetrically) put local forces that are stable.
118. Bug: package.info: publish_id was not set after publishing
119. Bug: adding a package to Heist results in a black map without models.
120. Bug: If a Script field contains a ", that is saved to the .world file and results in a parsing error the next time the world is loaded. Should either prevent that character or implement an escaping mechanism (there is none).
121. Bug: When naming a bone, there is a neat drop down field which can set the name to the name of an existing bone. But giving two bones an identical name renders one of them invisible, I sometimes even experience crashes when trying to do so. Since there is no method to get an array of bones by name (only array of all components), I don't get the point of the drop down field.
122. Remark: Component_GetNext() throws an error when called with the last component and there is no way to check that beforehand. Right now I don't see why I would ever use Component_GetNext() over Self_GetComponents().
123. Remark: To be consistent in the naming scheme, you need to rename Bone_GetCoords to Bone_GetLocalCoords and implement Bone_GetCoords as Self_GetCoords() * Bone_GetLocalCoords().
Not sure I can hop in and hijack, but this seems like the place to make requests
Changing fields in the editor with tab and shift tab would be amazing.
Checking the length of forms and allowing scroll would make windowed mode better, I have been trying to run with one monitor in windowed mode and that gets tough quick( example on inventory script of avatar http://i.imgur.com/M1pSNp0.jpg)
Checking the length of forms and allowing scroll would make windowed mode better, I have been trying to run with one monitor in windowed mode and that gets tough quick( example on inventory script of avatar http://i.imgur.com/M1pSNp0.jpg)
Here is another example that is unscrollable on any resolution.
I thought it was related, since the floor is from the vertigo package and the graphics bug looks like some specularMap is read from some random part of the memory. Also it's the only message in console and both occured with the same update (i think). I tried to fix it by editing the surface shader, but it was persistent, so I am not too sure anymore.
Start a new map, place a player spawner and look at the floor.
My model builder seems to be broken... tried it on FBX files that have previously worked and still the same thing. When trying to select the material i get no choice for shader or material settings:
verified cache and tried it on the beta and standard release. The model geo is ingame:
I've managed a work around by manually modding the build options and materials. Though I also noticed that when the builder is converting PSD files the alpha channel is saved as pure white. I had to open the DDS and resave it through photoshop to get the alpha channel to work.
Anyway I've been developing the visual style and claylook for the characters... going to do a few more before I move back into doing the environment set. Alien, threatening and comical is what I'm going for. feedback welcome
I thought it was related, since the floor is from the vertigo package and the graphics bug looks like some specularMap is read from some random part of the memory. Also it's the only message in console and both occured with the same update (i think). I tried to fix it by editing the surface shader, but it was persistent, so I am not too sure anymore.
Start a new map, place a player spawner and look at the floor.
Aha, thanks for the heads-up. That looks like the specular map for the Avatar and the rocket launcher. It looks like a reflections bug since it only occurs when they are turned on (which would be why I had no idea it existed, I had them turned off to debug something else), and it's angle-dependent. Paging @Max !
@Howser that's coming along really nicely, they look a lot more like they are made out of plasticine now.
H behaves strangely. Typing 250 results in 249. Pushing the slider to 360 results in 300. Typing 500 gives 319.
Setting S to 0 or nothing resets H to 0, which makes it hard type in the fields directly. Same for V, which resets S and H
circle should adjust colors to current V value or have an extra colored selector for V like this(src)
Alpha is missing (?)
Support for Hex-codes
126. Bug: Calling World_SendMessage[ToAll]() in an Automator (before the round is started) crashes the game.
127. Feature Request: CollisionFilterTriggerPreset that triggers on everything but not Self. I want to add a triggerbox to a moving physics object (the box overlaps the collision model), but it is triggered by its own collision component on spawn. I need a filter presets that ensures that message.triggerId is not the same as message.otherId. Currently its only solvable by setting the collision type to hitbox, which I do not want.
128. Bug: Grid increase/decrease does not work with every keyboard layout (i.e. german)
129. Q: I am not supposed to add 2 directional lights, right? Only one of them casts a shadow, and which one depends on the current viewing angles.
130. Remark: Model editor does not open for standard models. Not sure if it should. Works fine for self made ones.
Comments
I don't think it has been mentioned how mods for FP will be distributed. Will you use Steam Workshop, your own mod registry or is UWE not bothering with that at all.
I think every mod should have its owner mentioned in some registry to prevent other people from "ripping off" someones work. In WC3 this happened a lot, maps just got reworked and published as version+1 with a new creator, leading to mappers corrupting realeases of their maps in order to mess with the map editor so they can't be edited by others.
I think everyone should be able to inspect a mod and reuse its content in their own mod. One should not however mess with an already existing mod, and republish it as his work. After all, it is possible to crack these file-based protection mechanisms anyways. Afaik most content creators don't have any problems if work they publish for free gets used in the work of another artist, as long as proper credit is given.
Any code released through the steam workshop, as it is lua based, is basically open-source anyway.
I have absolutely no objections if anyone modifies my work, as long as credit is given, I am purely talking about from the perspective of making a mod game mode that you want people to be able to play without the server host being able to edit the game in real-time play.
My mods should be able to be opened in the editor freely by anyone and changed as they see fit, however, when playing my version of the game, I do not want anyone to be able to edit it at 'run-time'
52. Bug: >game.exe -build_assets C:\test< creates C:\testpackets (check for trailing backslash)
Fixed.
53. Q: >game.exe -build_assets C:\test\< just builds assets and exits. that is intended behavior, right? what's the parameter to set the assets build dir during gameplay? and is it possible to change the assets source dir?
That is the intended behavior. This isn't really intended for players to use; we use it as part of our build process for deploying the game. You can change the source assets directory with -documents_path.
54. Remark: input fields are missing some standard interactions (tab switch, copy, paste, select all, highlight on focus)
Added to our list (though Paste should be working, though in some ways limited by selection).
55. Bug: cursor not visible when input bigger than input field
Added to our list.
56. Bug: crash when resizing controller radius/height to zero -> catch error and/or limit slider range
Fixed.
57. Remark: unclear why controller comes bundled with the controller volume, which is in it's effect a collsion volume
This is for simplicity in the use and the implementation. Right now it's based off of the PhysX character controller which is limited to a capsule shape. We might move away from that, but limiting the controller's shape makes it easier to do things efficiently.
58. Bug: Script Error Icon is not removed when the respective script component is deleted
Added to our list.
59. Bug: (?) Player Spawner - Setting Player Blueprint to Mine or Alt_Coin crashes the game
Fixed.
60. Bug: labels are rendered in front of component editor and menu
Fixed.
64. Feature Request: Key inputs (i.e. Action.Use, Action.PrimaryAction) are easy to find out, but should be documented. also, doesn't this limit the number of keys to 32 or so?
Noted. I think documentation is one of the big areas that we need to address right now.
65. Bug: move and rotate gizmo don't work on objects which have collision physics enabled (in play mode)
Fixed.
66. Feature Request: way to print sth to console, that does not print into log. Printing something often, i.e. velocity of a moving object, creates a lot of output I dont necessarily want to bother my poor SSD with.
We're building out a debugging UI which sounds like a good place for this functionality to live. Thanks for the input.
67. Remark: there is no Self_GetAngles, only Self_GetLocalAngles. Coords and Position have both variants. Not that I know what it would return, but symmetry is nice.
68. Feature Request: ability to place Controller/Trigger Box relative to model
We've had some debates on this one internally. Hearing an outside opinion is useful.
69. Bug: (?) moves entity (model + controller + script) in x-dir, but when a collision component is added, the object moves diagonally (x-y). Probably to be ignored as I didn't call Player_SetControlledEntity in before.
Calling SetControlledEntity shouldn't be necessary for it to work (for example, you could use this on an AI). This sounds like it might be caused by the controller colliding with the collision component.
70. Q: Complete list of all functions called by the game? My list so far:
OnThink - called every 1/30th sec
OnCreate - called once when entity is created (after game start)
OnDestroy - called once when entity is destroyed
OnTrigger - called on enter/exit of trigger box through trigger component
OnTimer - called repeatedly after specified interval through timer component
OnInput - called on key press/release through controller component
OnView - called on mouse movement through controller component
OnHud - ?
OnGravity - ?
OnPlayerJoin - called once when a player joins (after game start)
Execute (Automator only) - called when sth changes (?)
Shutdown (Automator only) - ?
That's the complete list, with the exception of OnGravity and Shutdown, which aren't called by the engine.
71. Q: Should I be able to add a package to its own package list? I am not 100% sure, but I think that is what caused an error were others were unable to join the game
No, that sounds like a bug. I'll look into it.
72. Q: What does "Find Packages" filter for? searching for "mine" yields "Rocket Science" - unexpected
For locally installed packages it's searching the text in the title and description (for Rocket Science it's matching "determine" in the description). For Steam packages it's invoking the Steam search functionality which I believe does something similar. I've improved our search so it only matches on the start of a word instead of anywhere inside the word which should make it behave more as you'd expect.
73. Bug: different blueprints with the same name show only up once. maximum confusion as it depends on the loading order which can not be manipulated ingame. I.e. there exists shooter/shooter/spawners/player_spawner.blueprint (which gives you a railgun by default) and spawners/spawners/player_spawner.blueprint (all fields empty). importing spawners after shooter gives only access to the empty one. unless you import avatar after that, as that imports shooter again.
74. Remark: Dependencies need to be cleaned up. I.e. spawners package loads vertigo but does not really depend on it (as far as i see). Or alt_coin imports avatar and vertigo, just because it comes with a world, which it does not really need. better create "Tutorials: Alt Coin" as a separate world. also implicit imports are not easy to follow, i.e. the reason "mine" is available is because the "shooter" package imports it, "avatar" implicitly imports "railgun", everything at some point imports "vertigo", etc.
Added to the list.
75. Bug: renaming a .model file makes it unusable, i.e. mv a.model b.model (?)
If you rename the .model file, the build system might automatically delete it since there's no corresponding source file (i.e. fbx) for it. Basically you're not expected to ever touch those files, and instead you'd rename the fbx.
76. Q: Is there a way to detect when a collision geometry has collided with something? I.e. if I were to write a script that counts how often an entity colided with a wall or changes a skin on each collision. There is no OnHit or OnCollision, triggers come only box shaped, I can only check Overlap for boxes, spheres and rays, and Self_AddCollisionComponent doesn't have a callback. So how can I do it?
Added to the list. You should be able to change the shape of the trigger to accomplish this (they're not limited to boxes), but a dedicated message for the collision component would be nicer.
I was kind of lead to believe that "controller" is for actively controlled entities only, as moving_robot.lua doesn't use it, while moving_player.lua does. Additionally I regularly get "Moving controller before it was created" errors (ComponentControllerManager.cpp:165) when trying to move controllers (despite my 2 second offset). Thought that was because they have no player attached.
Thanks, don't know how I could miss that.
77. Remark: Should there be an error message when applying Collision_AddForce to a collision which has physics disabled?
78. Bug: vec3.lua: Had this listed as bug, but there is a chance it is intentional. Although it is not immediately clear what multiplication of two vectors should return, right now __mul returns the addition of both vectors, which I feel is never the intention. Also v*v = 2*v = v+v just looks wrong. I think it should return either of the following
* skalar product aka inner product * cross product aka vector product * Hadamard product aka entrywise product (would prefer this) * tensor product aka outer product
79. Remark: color.lua: it's nice to see named colors there, but why only these? I attached a lua file for all named HTML/CSS colors, note however that there are slight differences, most notably green is (0,.5,0) and the bright (0,1,0) is named lime. (btw: forum should allow upload of .lua files)
80. Bug: .jpg is supported but .jpeg is not
81. Remark: the floor asset should be located below it's origin. right now, when you drop an entity on it, it is placed IN the floor
82. Remark: created an avatar, but accidentally it was facing right. rotating the model to face forward also rotated the controller. could only solve this by rotating the model in the fbx file
83. Remark: edit blueprint, change position of bone -> does not snap
84. Bug: slight glitches for Collision_AddTorque(collisionId, Vec3(200,200,200))
my best guess is, that a high angular velocity yields values for pitch that are outside of [-pi/2,pi/2], causing a reorientation of yaw and roll during one frame
85. Remark: as seen in the video, the angular velocity is slowing down over time. Is this really necessary? Would prefer if the angular momentum would be preserved. I.e. to create a spining hovering pickup item, you would add torque after creation and never think about it again.
86. Bug: clicks on checkboxes of blueprints (i.e. room or stack) sometimes (most of the time) don't trigger
Edit: regarding #69, Max was right. The controller is bumping against the collision mesh, when it is of type solid or similar (not hitbox and ghost). Kind of limiting.
Is it possible that the slow down in velocity over time is due to the re-orientation that occurs?
It seems like the axis are flipping briefly, so in frame by frame velocity calculations, there would be a frame or two each rotation where momentum is in the opposite direction, which could cause the slight slow-down experienced.
77. That is a good question. I don't think an error should be displayed in this case. It is just a null operation. The same is true for toggling the visibility of a model component that doesn't currently have a model set. There is a question of what should happen to the collision when physics is reenabled.
78. I'll pass your suggestion along to the team.
79. Thanks! I am going to integrate your changes while still maintaining backwards compatibility with the exception of green which will be 0, 0.5, 0 as in the standard.
80. Added to the list! Should be simple.
81. This is an interesting one. I'm surprised where the origin is matters here. I'll investigate.
82. I think you solved this the correct way unless I am misunderstanding.
83. I don't fully understand. The bone isn't snapping? I don't think bones usually snap to anything.
84. Added to the list!
85. This is controlled by angular damping. There is no API for that yet but it can be controlled in a model's build options file. There will eventually be an editor to control this. I'll add a task to expose it to the API.
86. Ah! I never noticed this somehow. I guess I just got lucky. Added. Thanks.
I noticed that darkGrey = 0.66, 0.66, 0.66, 1.00 in your example. That seems relatively light for a dark grey but I assume that is just how it is defined in the standard.
I also noticed you copied all the greys with the alternative gray spelling. Is that part of the CSS standard too?
I added the grey spelling (as well as the 'none' color and the lower case first character) to be compatible with the existing color.lua. It's not part of the spec, but i.e. in latex, packages often come with an option to enable the alternative spelling, so I figured it couldn't hurt.
Edit: turns out the CSS3 spec is actually based on the SVG spec, which supports both spellings of gray. SVG on the other hand is based on the X11 colors, which explains the darkGray issue
Regarding 82, I was just not aware that a model should have a certain orientation. Was a minor annoyance as i tried to rotate the model and the camera a couple of times until I realized that sth was wrong on a more fundamental level. There could be a rotation specified in the model build options, but that would probably be over the top.
Regarding 83, I just wanted to point out that bones do not snap to a grid, while everything else does. If consistency of the UI is a top priority, this may need to be adressed. I think it can stay as it is.
88. Q: From looking at external_ffi.lua, I can tell that 'WorldHit' has members hit.position, hit.normal, hit.entityId, hit.distance. Since it is no table, I cannot traverse it with pairs(),next(),etc. Is there a way to obtain a list all members with a command?
89. Bug: (?) entity with enabled physics that is attached to another entity is destroyed on game start. should just disable physics
90. Remark: Printing entityIds to console gives strange values, since entityId is of type double. shouldn't it be long long instead? would expect an id to be integer, not floating point. (yeah i know about EntityId_ToString)
91. Q: Speaking of EntityId_ToString, what is the 'use' field of an entity and under which circumstances does it count up?
92. Bug: Coords.GetIdentity(offset) should be Coords.GetIdentity() or make use of the argument
93. Remark: label supports 4.5 lines of text. better 5?
94. Feature Request: colored text in labels, i.e. to color names in team color or print x,y,z in their respective color
95. Q: If entity has the player tag, label text *name* is replaced by the player name. How does that work? What part is responsible for this? Are there more keywords?
96. Remark: dont see the description text of a 'Descriptor comment' anywhere. script_markup.html outdated?
97. Remark: When you uncheck the package's "playable" checkbox and exit, it is kind of difficult to go back (only by manually editing the package.info).
98. Remark: Not 100% sure but I think it is not possible to publish an item without publishing a .world file with it.
99. Bug: After a couple of changes in the build_options file (i.e. change scale to some different values), the game crashes reliably.
100. Bug: If you rename a script from a.lua to A.lua, the change is not reflected properly in the build dir. Has the confusing effect that changes in the script are recognized, but do not carry over.
101. Bug: Spelling Error: "Unrecognized comand 'asdasfsdfsd'"
102. Feature Request: Self_SetName(), possibly also Entity_GetName(id) (<- risky, people might be tempted to use that instead of the getTag mechanism)
103. Bug: Entity_GetTag(entityId, i) crashes the game for any i bigger than NumTags. Most notably in the case where there are no tags. I know, I am supposed to check the range beforehand, still it shouldn't crash. Also tags are 0-based where others such as World_TestRayOverlap are 1-based.
104. Feature Request: Self_AddLabelComponent() should take a parameter for the vertical offset.
105. Feature Request: I have two instances of the same model, and would like to separate them through different color tinting. Would be awesome if I could just set a color by script, instead of going through the tedious process of creating a new skin. I have no clue if this is even compatible with the rendering pipeline.
106. Remark: I see that the context of Entity_GetComponent is restricted to automators. I suspect the reasoning is, that every entity is only manipulated by it's own scripts. In my case, my entity has a child entity which only has a label component (this way I have better control of the label placement), and i don't really want to create another script just to set a label text.
107. Bug: Package description text does not allow multiple lines; "\n" is printed literally, line breaks cause a parsing error. When you want multiple lines, you need to check steam after publishing and change the description manually, which is annoying.
109. Remark: Quaternions are missing some fundamental methods, most notably multiplication. I have written my own (attached to this post). Also contains a fix for the next issue. I have not yet managed to manipulate any metatable, therefore if you decide to adopt these, you need to replace the first arguments with 'self' (where applicable), rename the methods and add __mul, __len, etc yourself. Have only made brief checks that everything behaves in a benign fashion for left-handed/mirrored Coords (don't really care about these).
I also attached a proposal for a simplified way to handle rotations, as Euler angles have their pitfalls and quaternions are a little bit too abstract.
110. Bug: Quat:GetEulerAngles() is wrong, in more than one way. I guess you used this conversion. The first error is due to the (imho strange) convention to write the quaternion as (x,y,z,w) instead of (w,x,y,z). Therefore you erroneously identified q_0 with x instead of w. But even then, it is still the wrong formula, as it is for a Z-Y'-X'' rotation (in a coordinate system where Z is upwards, see #18), while you use a Y-X'-Z'' rotation. Then it should return an Angles() object instead of 3 numbers. Lastly it should be named GetAngles() to be consistent with the other methods that use Euler angles.
111. Feature Request: World_GetPlayTime() - Time since the current round was started.
112. Remark: Accidentally made a selection of a moving and a stationary object. Had the funny effect that when you hold the gizmo the stationary object starts moving, and when you release it the other one moves.
113. Feature Request: Collision_AddLocalTorque(v) to rotate around the body's axes instead of global ones
Edit: No, I am not.
87. Feature Request: start game should have the last played mod preselected (tricky, when last mod is no longer available)
We're planning on doing something like this soon.
88. Q: From looking at external_ffi.lua, I can tell that 'WorldHit' has members hit.position, hit.normal, hit.entityId, hit.distance. Since it is no table, I cannot traverse it with pairs(),next(),etc. Is there a way to obtain a list all members with a command?
There's no way to get the members. We're going to have proper documentation on all of this (hopefully soon). The members you see in external_ffi.lua are all of the members though.
89. Bug: (?) entity with enabled physics that is attached to another entity is destroyed on game start. should just disable physics
I'm guessing it probably is exploding (the entity is flying off into space). I'll look into making that not happen.
90. Remark: Printing entityIds to console gives strange values, since entityId is of type double. shouldn't it be long long instead? would expect an id to be integer, not floating point. (yeah i know about EntityId_ToString)
The strangeness of the entity id storage is a concession to improve performance, since storing it as a 64-integer requires it to be cdata in luajit. What you're seeing is the bits of the 64-bit integer reinterpreted as a 64-bit double. Maybe we'll find ways to make this better in the future.
91. Q: Speaking of EntityId_ToString, what is the 'use' field of an entity and under which circumstances does it count up?
The "use" part of an entity id is the number of times the entity "index" has been reused. The entities are stored in an array, and when an entity in one slot is destroyed, the slot will get reused by a new entity. Tracking the use count allows us to tell if an entity id refers to what is in the slot now, or something that was destroyed.
92. Bug: Coords.GetIdentity(offset) should be Coords.GetIdentity() or make use of the argument
Fixed (the parameter shouldn't be there).
93. Remark: label supports 4.5 lines of text. better 5?
That sounds like a good idea, I'll look into it.
94. Feature Request: colored text in labels, i.e. to color names in team color or print x,y,z in their respective color
Do you have thoughts on how this would work? Special keywords in the label?
95. Q: If entity has the player tag, label text *name* is replaced by the player name. How does that work? What part is responsible for this? Are there more keywords?
The label component does it in the engine. Right now that's the only keyword.
96. Remark: dont see the description text of a 'Descriptor comment' anywhere. script_markup.html outdated?
The documentation was correct, but the comment was never displayed anywhere. I've added it as a tool tip for the script fields in the editor.
97. Remark: When you uncheck the package's "playable" checkbox and exit, it is kind of difficult to go back (only by manually editing the package.info).
You should still be able to load it from in the editor. I'm going to be reworking some of the UI related to loading worlds and packages to make this better though.
98. Remark: Not 100% sure but I think it is not possible to publish an item without publishing a .world file with it.
This is intentional, since you might have something that's just a collection of assets that you're publishing for other people to use.
99. Bug: After a couple of changes in the build_options file (i.e. change scale to some different values), the game crashes reliably.
I'll try to reproduce this, but if you have specific steps that would be helpeful.
100. Bug: If you rename a script from a.lua to A.lua, the change is not reflected properly in the build dir. Has the confusing effect that changes in the script are recognized, but do not carry over.
I've added a task for this.
101. Bug: Spelling Error: "Unrecognized comand 'asdasfsdfsd'"
Fixed.
102. Feature Request: Self_SetName(), possibly also Entity_GetName(id) (<- risky, people might be tempted to use that instead of the getTag mechanism)
We can definitely add Self_SetName. I'll have to think about the other one though.
103. Bug: Entity_GetTag(entityId, i) crashes the game for any i bigger than NumTags. Most notably in the case where there are no tags. I know, I am supposed to check the range beforehand, still it shouldn't crash. Also tags are 0-based where others such as World_TestRayOverlap are 1-based.
You're right, these functions should never crash, even with bad input.
104. Feature Request: Self_AddLabelComponent() should take a parameter for the vertical offset.
I've added Label_SetVerticalOffset/Label_GetVerticalOffset.
105. Feature Request: I have two instances of the same model, and would like to separate them through different color tinting. Would be awesome if I could just set a color by script, instead of going through the tedious process of creating a new skin. I have no clue if this is even compatible with the rendering pipeline.
This (and much more!) will be possible in the future when we expose the full capabilities of the material system.
106. Remark: I see that the context of Entity_GetComponent is restricted to automators. I suspect the reasoning is, that every entity is only manipulated by it's own scripts. In my case, my entity has a child entity which only has a label component (this way I have better control of the label placement), and i don't really want to create another script just to set a label text.
Yes, it's restricted so that entities don't know/care about the internal structure of other entities. Sometimes it does feel a little convoluted if you just want to do something simple. We've considered having different forms of parent/child relationships between entities to model the difference between your stomach being attached to your body (it's a part of you) and a cup being attached to you (you're holding it). In the former case you would have full access to the attached entities. We haven't decided if this is a good idea and/or worth doing yet though.
107. Bug: Package description text does not allow multiple lines; "\n" is printed literally, line breaks cause a parsing error. When you want multiple lines, you need to check steam after publishing and change the description manually, which is annoying.
Once I implement a multi-line text edit box we'll have this. You should be able to use line breaks in the package.info file if you use this syntax description = [[First Line
Second Line]]
109. Remark: Quaternions are missing some fundamental methods, most notably multiplication. I have written my own (attached to this post). Also contains a fix for the next issue. I have not yet managed to manipulate any metatable, therefore if you decide to adopt these, you need to replace the first arguments with 'self' (where applicable), rename the methods and add __mul, __len, etc yourself. Have only made brief checks that everything behaves in a benign fashion for left-handed/mirrored Coords (don't really care about these).
I also attached a proposal for a simplified way to handle rotations, as Euler angles have their pitfalls and quaternions are a little bit too abstract.
Thanks, I'll check it out.
110. Bug: Quat:GetEulerAngles() is wrong, in more than one way. I guess you used this conversion. The first error is due to the (imho strange) convention to write the quaternion as (x,y,z,w) instead of (w,x,y,z). Therefore you erroneously identified q_0 with x instead of w. But even then, it is still the wrong formula, as it is for a Z-Y'-X'' rotation (in a coordinate system where Z is upwards, see #18), while you use a Y-X'-Z'' rotation. Then it should return an Angles() object instead of 3 numbers. Lastly it should be named GetAngles() to be consistent with the other methods that use Euler angles.
I'll dig into this. The Lua code is ported from the C++ code in the engine which is used for the rotation editing field.
111. Feature Request: World_GetPlayTime() - Time since the current round was started.
This is should be what World_GetTime() returns, but I see that it may be wrong when switching in and out of the editor.
113. Feature Request: Collision_AddLocalTorque(v) to rotate around the body's axes instead of global ones[/quote]
Added.
I'm guessing it probably is exploding (the entity is flying off into space). I'll look into making that not happen.
The OnDestroy Method is called, even when there are no Gamebounds. So I figured it is not just flying away.
94. Feature Request: colored text in labels, i.e. to color names in team color or print x,y,z in their respective color
Do you have thoughts on how this would work? Special keywords in the label?
I thought of predefined colors and keywords in the labeltext, yes. Something similar to what others have:
- quake3/CoD: ^1Flo^2wer^3Po^4wer
- Minecraft: §1R§2e§3d§4s§5t§6o§7n§8e §9C§ar§be§ca§dt§ei§fo§1n§2s
- mIRC: ^C5colored text^C
- Dota2: (uses ASCII control characters)
- shell: \033[36;42;1mHI (No actually, don't do it)
The first two will probably do it and are easy to implement. Just choose a control character (*,@,/,\,$,§,<,>) and parse the next character. If you want to go the extra mile: there are 140 named colors. So one byte (00-FF) is enough to adress all of them.98. Remark: Not 100% sure but I think it is not possible to publish an item without publishing a .world file with it.
This is intentional, since you might have something that's just a collection of assets that you're publishing for other people to use.
I don't understand. If I want to publish only a collection of assets, why would I want to publish an additional .world file with it, that just clutters the asset browser?
99. Bug: After a couple of changes in the build_options file (i.e. change scale to some different values), the game crashes reliably.
I'll try to reproduce this, but if you have specific steps that would be helpeful.
Had a little bit of testing. Apparently the game must be started and running (with game I mean the round not the program), the model must have a collision attached and physics must be enabled. Changing scale a couple of times causes a crash. If you have trouble reproducing it, I make a video or send you the crashdump.
111. Feature Request: World_GetPlayTime() - Time since the current round was started.
This is should be what World_GetTime() returns, but I see that it may be wrong when switching in and out of the editor.
World_GetTime() returns the time since the world was loaded. If i stop the current round (Shift+F5), that time keeps going. I want the time that counts from the moment I start the game/round again (F5). I can calculate it with "local loadTime=World_GetTime(); function World_GetPlayTime() return World_GetTime() - loadTime end", given that that script was spawned with the game start.
Something similar happens for but not for Not sure if it's worth fixing it.
115. Q: I am trying to make sense of some numbers associated with Collision_GetLinearVelocity, Collision_GetAngularVelocity, Collision_AddForce, Collision_AddTorque, but I could use some help.
If I call Collision_AddForce(collisionId, Vec3(60,0,0)), then Collision_GetAngularVelocity will report a velocity of (1,0,0). The scripting guide mentioned that units are in meters, so I assume SI units everywhere, meaning that the force F is 60N and the velocity v is 1m/s.
Now if I calculate v=1m/s=p/m=Int F dt/m = 60kg m s^-2 * deltaT / m that results in deltaT / m = 1/60 s/kg. So either the force acts for deltaT=1/60th seconds on a 1kg mass or the mass is 2kg at 1/30 s (or anything in else which results in 1/60). If the first case is true (the physics simulation runs on 60Hz despite the scripts being called at 30Hz), that would mean that the actual forces need to be doubled, i.e. gravity=20 instead of 10 (or 19.6133 instead of 9.80665). And indeed a higher gravity looks more realistic and gives the same behavior as enabling gravity through the collision's checkbox.
Now what really confuses me are the measurements that I made. For the case that GetLinearVelocity returns a velocity of 1, the object is actually moving at 0.5m/s. So what is going on?
Angular velocity has the same issue + that it appears that torque is given in degrees instead of radians, i.e.:
Collision_AddTorque(collisionId, Vec3(360,0,0)) yields an angular velocity of 6 (not 2pi but 360/60) and measurements indicate a rotation of 180° per second.
It's funny, because that is what I was actually saying
There are a couple of issues associated with the new color picker, but I guess it's to early to bring them up, right?
Just spotted this one! Fixed.
116. Feature Request: A method that returns the mass of an object/collision. Right now I determine this number by hand: call Collision_AddForce(collisionId, Vec3(1,0,0)) and use mass=1/Collision_GetLinearVelocity(collisionId).x.
117. Feature Request: A method that returns the position of the center of mass. Really need this so I know where to (symmetrically) put local forces that are stable.
118. Bug: package.info: publish_id was not set after publishing
119. Bug: adding a package to Heist results in a black map without models.
120. Bug: If a Script field contains a ", that is saved to the .world file and results in a parsing error the next time the world is loaded. Should either prevent that character or implement an escaping mechanism (there is none).
121. Bug: When naming a bone, there is a neat drop down field which can set the name to the name of an existing bone. But giving two bones an identical name renders one of them invisible, I sometimes even experience crashes when trying to do so. Since there is no method to get an array of bones by name (only array of all components), I don't get the point of the drop down field.
122. Remark: Component_GetNext() throws an error when called with the last component and there is no way to check that beforehand. Right now I don't see why I would ever use Component_GetNext() over Self_GetComponents().
123. Remark: To be consistent in the naming scheme, you need to rename Bone_GetCoords to Bone_GetLocalCoords and implement Bone_GetCoords as Self_GetCoords() * Bone_GetLocalCoords().
Changing fields in the editor with tab and shift tab would be amazing.
Checking the length of forms and allowing scroll would make windowed mode better, I have been trying to run with one monitor in windowed mode and that gets tough quick( example on inventory script of avatar http://i.imgur.com/M1pSNp0.jpg)
Here is another example that is unscrollable on any resolution.
125. Bug: Vec3(0,0.9,0):GetPerpendicular() --> Vec3(nan, 0, nan)
If I am supposed to normalize the vector, add a comment.
Oops, I guess that bug slipped through the net last update. Fixed! What's the picture?
Start a new map, place a player spawner and look at the floor.
verified cache and tried it on the beta and standard release. The model geo is ingame:
Anyway I've been developing the visual style and claylook for the characters... going to do a few more before I move back into doing the environment set. Alien, threatening and comical is what I'm going for. feedback welcome
Aha, thanks for the heads-up. That looks like the specular map for the Avatar and the rocket launcher. It looks like a reflections bug since it only occurs when they are turned on (which would be why I had no idea it existed, I had them turned off to debug something else), and it's angle-dependent. Paging @Max !
@Howser that's coming along really nicely, they look a lot more like they are made out of plasticine now.
125. Bug: Colorpicker:
126. Bug: Calling World_SendMessage[ToAll]() in an Automator (before the round is started) crashes the game.
127. Feature Request: CollisionFilterTriggerPreset that triggers on everything but not Self. I want to add a triggerbox to a moving physics object (the box overlaps the collision model), but it is triggered by its own collision component on spawn. I need a filter presets that ensures that message.triggerId is not the same as message.otherId. Currently its only solvable by setting the collision type to hitbox, which I do not want.
128. Bug: Grid increase/decrease does not work with every keyboard layout (i.e. german)
129. Q: I am not supposed to add 2 directional lights, right? Only one of them casts a shadow, and which one depends on the current viewing angles.
130. Remark: Model editor does not open for standard models. Not sure if it should. Works fine for self made ones.
131. Bug: Start editor, add package, close package edit view -> crash