My first impressions, suggestions and a few questions....

24

Comments

  • bERt0rbERt0r Join Date: 2005-03-23 Member: 46181Members Posts: 611 Fully active user
    edited January 2015
    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_RiderSoul_Rider Mod Bean Join Date: 2004-06-19 Member: 29388Members, Constellation, Squad Five Blue Posts: 4,269 Advanced user
    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'
    Games:Subnautica Fan Game Mods: GorgeCraft & CTF & Proving Grounds Website: andysoulrider.uk
    Twitter: @AndySoulRider Twitch: Twitch.tv/SoulRider YouTube: Youtube.com/user/IamSoulRider/videos

    Capitalisation is the difference between helping your Uncle Jack off a horse and helping your uncle jack off a horse.
    Knowledge is gained through listening, Understanding is gained through discussion.
  • MaxMax Technical Director, Unknown Worlds Entertainment Join Date: 2002-03-15 Member: 318Super Administrators, Retired Developer, NS1 Playtester, Forum Moderators, NS2 Developer, Constellation, Subnautica Developer, Pistachionauts, Future Perfect Developer Posts: 1,737 admin
    Brute wrote: »
    Here comes the next list of things I stumbled upon.
    This is fantastic, thanks.

    Max McGuire
    Technical Director, Unknown Worlds Entertainment
  • MaxMax Technical Director, Unknown Worlds Entertainment Join Date: 2002-03-15 Member: 318Super Administrators, Retired Developer, NS1 Playtester, Forum Moderators, NS2 Developer, Constellation, Subnautica Developer, Pistachionauts, Future Perfect Developer Posts: 1,737 admin
    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.

    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: (?)
        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.
    Max McGuire
    Technical Director, Unknown Worlds Entertainment
  • BruteBrute Join Date: 2009-06-10 Member: 67778Members, Squad Five Blue, Reinforced - Shadow, WC 2013 - Shadow Posts: 138 Fully active user
    Max wrote: »
    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.

    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.
    Max wrote: »
    You should be able to change the shape of the trigger to accomplish this (they're not limited to boxes)
    Thanks, don't know how I could miss that.
  • BruteBrute Join Date: 2009-06-10 Member: 67778Members, Squad Five Blue, Reinforced - Shadow, WC 2013 - Shadow Posts: 138 Fully active user
    edited January 2015
    Next batch. Now with 100% more multimedia.

    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
    x5ywi9va.jpg

    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.
    Post edited by Brute on
  • Soul_RiderSoul_Rider Mod Bean Join Date: 2004-06-19 Member: 29388Members, Constellation, Squad Five Blue Posts: 4,269 Advanced user
    edited January 2015
    @Brute‌

    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.
    Games:Subnautica Fan Game Mods: GorgeCraft & CTF & Proving Grounds Website: andysoulrider.uk
    Twitter: @AndySoulRider Twitch: Twitch.tv/SoulRider YouTube: Youtube.com/user/IamSoulRider/videos

    Capitalisation is the difference between helping your Uncle Jack off a horse and helping your uncle jack off a horse.
    Knowledge is gained through listening, Understanding is gained through discussion.
  • BruteBrute Join Date: 2009-06-10 Member: 67778Members, Squad Five Blue, Reinforced - Shadow, WC 2013 - Shadow Posts: 138 Fully active user
    edited January 2015
    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_RiderSoul_Rider Mod Bean Join Date: 2004-06-19 Member: 29388Members, Constellation, Squad Five Blue Posts: 4,269 Advanced user
    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 :)
    Games:Subnautica Fan Game Mods: GorgeCraft & CTF & Proving Grounds Website: andysoulrider.uk
    Twitter: @AndySoulRider Twitch: Twitch.tv/SoulRider YouTube: Youtube.com/user/IamSoulRider/videos

    Capitalisation is the difference between helping your Uncle Jack off a horse and helping your uncle jack off a horse.
    Knowledge is gained through listening, Understanding is gained through discussion.
  • MurphyIdiotMurphyIdiot NS2 programmer Join Date: 2008-04-17 Member: 64095Members, Super Administrators, NS2 Developer, Subnautica Developer, Pistachionauts, Future Perfect Developer Posts: 246 admin
    Thanks again @Brute‌!

    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.
  • MurphyIdiotMurphyIdiot NS2 programmer Join Date: 2008-04-17 Member: 64095Members, Super Administrators, NS2 Developer, Subnautica Developer, Pistachionauts, Future Perfect Developer Posts: 246 admin
    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?
  • BruteBrute Join Date: 2009-06-10 Member: 67778Members, Squad Five Blue, Reinforced - Shadow, WC 2013 - Shadow Posts: 138 Fully active user
    edited January 2015
    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.
    Post edited by Brute on
  • MaxMax Technical Director, Unknown Worlds Entertainment Join Date: 2002-03-15 Member: 318Super Administrators, Retired Developer, NS1 Playtester, Forum Moderators, NS2 Developer, Constellation, Subnautica Developer, Pistachionauts, Future Perfect Developer Posts: 1,737 admin
    Brute wrote: »
    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.

    Max McGuire
    Technical Director, Unknown Worlds Entertainment
  • BruteBrute Join Date: 2009-06-10 Member: 67778Members, Squad Five Blue, Reinforced - Shadow, WC 2013 - Shadow Posts: 138 Fully active user
    edited January 2015
    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.

    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)<br>
    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
    Post edited by Brute on
  • BruteBrute Join Date: 2009-06-10 Member: 67778Members, Squad Five Blue, Reinforced - Shadow, WC 2013 - Shadow Posts: 138 Fully active user
    edited January 2015
    I think I am mistaken on #110. Did not normalize the axis and/or mixed up roll and pitch.

    Edit: No, I am not.
    Post edited by Brute on
  • MaxMax Technical Director, Unknown Worlds Entertainment Join Date: 2002-03-15 Member: 318Super Administrators, Retired Developer, NS1 Playtester, Forum Moderators, NS2 Developer, Constellation, Subnautica Developer, Pistachionauts, Future Perfect Developer Posts: 1,737 admin
    edited January 2015
    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.

    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)<br> 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.
    Max McGuire
    Technical Director, Unknown Worlds Entertainment
  • BruteBrute Join Date: 2009-06-10 Member: 67778Members, Squad Five Blue, Reinforced - Shadow, WC 2013 - Shadow Posts: 138 Fully active user
    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:
    • 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.


  • MaxMax Technical Director, Unknown Worlds Entertainment Join Date: 2002-03-15 Member: 318Super Administrators, Retired Developer, NS1 Playtester, Forum Moderators, NS2 Developer, Constellation, Subnautica Developer, Pistachionauts, Future Perfect Developer Posts: 1,737 admin
    Brute wrote: »
    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.

    Max McGuire
    Technical Director, Unknown Worlds Entertainment
  • BruteBrute Join Date: 2009-06-10 Member: 67778Members, Squad Five Blue, Reinforced - Shadow, WC 2013 - Shadow Posts: 138 Fully active user
    edited January 2015
    114. Bug: Descriptor comment:
    print("--------")
    
    > "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.
    Max wrote: »
    Brute wrote: »
    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?
    Post edited by Brute on
  • InsaneInsane Anomaly Join Date: 2002-05-13 Member: 605Members, Super Administrators, Forum Admins, NS1 Playtester, Forum Moderators, NS2 Developer, Constellation, NS2 Playtester, Squad Five Blue, NS2 Map Tester, Subnautica Developer, Pistachionauts, Future Perfect Developer Posts: 3,912 admin
    Brute wrote: »
    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
    x5ywi9va.jpg

    Just spotted this one! Fixed.

  • BruteBrute Join Date: 2009-06-10 Member: 67778Members, Squad Five Blue, Reinforced - Shadow, WC 2013 - Shadow Posts: 138 Fully active user
    edited January 2015
    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().
    Post edited by Brute on
  • ConfusedConfused Wait. What? Join Date: 2003-01-28 Member: 12904Members, Constellation, NS2 Playtester, Squad Five Blue, Subnautica Playtester Posts: 2,117 Advanced user
    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)
  • BruteBrute Join Date: 2009-06-10 Member: 67778Members, Squad Five Blue, Reinforced - Shadow, WC 2013 - Shadow Posts: 138 Fully active user
    Confused wrote: »
    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.
    rtslicTs.jpg
  • BruteBrute Join Date: 2009-06-10 Member: 67778Members, Squad Five Blue, Reinforced - Shadow, WC 2013 - Shadow Posts: 138 Fully active user
    124. Bug:
    Compiling 'vertigo/decals/Indent.surface_shader'
    vertigo/decals/Indent.surface_shader(7) : Undeclared identifier 'specularMap'
    vertigo/decals/Indent.surface_shader(7) : Undeclared identifier 'specularMap'
    vertigo/decals/Indent.surface_shader(7) : Undeclared identifier 'specularMap'
    
    QVAWgess.jpg

    125. Bug: Vec3(0,0.9,0):GetPerpendicular() --> Vec3(nan, 0, nan)
    If I am supposed to normalize the vector, add a comment.
  • InsaneInsane Anomaly Join Date: 2002-05-13 Member: 605Members, Super Administrators, Forum Admins, NS1 Playtester, Forum Moderators, NS2 Developer, Constellation, NS2 Playtester, Squad Five Blue, NS2 Map Tester, Subnautica Developer, Pistachionauts, Future Perfect Developer Posts: 3,912 admin
    Brute wrote: »
    124. Bug:
    Compiling 'vertigo/decals/Indent.surface_shader'
    vertigo/decals/Indent.surface_shader(7) : Undeclared identifier 'specularMap'
    vertigo/decals/Indent.surface_shader(7) : Undeclared identifier 'specularMap'
    vertigo/decals/Indent.surface_shader(7) : Undeclared identifier 'specularMap'
    
    QVAWgess.jpg

    Oops, I guess that bug slipped through the net last update. Fixed! What's the picture?
  • BruteBrute Join Date: 2009-06-10 Member: 67778Members, Squad Five Blue, Reinforced - Shadow, WC 2013 - Shadow Posts: 138 Fully active user
    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.
  • HowserHowser UK Join Date: 2010-02-08 Member: 70488Members, NS2 Playtester, Squad Five Blue, Reinforced - Shadow, WC 2013 - Shadow, Subnautica Playtester, Retired Community Developer Posts: 654 Advanced user
    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:
    pyRblqy.jpg
    verified cache and tried it on the beta and standard release. The model geo is ingame:
    ncnTCmP.jpg
  • HowserHowser UK Join Date: 2010-02-08 Member: 70488Members, NS2 Playtester, Squad Five Blue, Reinforced - Shadow, WC 2013 - Shadow, Subnautica Playtester, Retired Community Developer Posts: 654 Advanced user
    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
    kJSnaZ2.jpg
    Wsoe7q5.jpg
    Soul_RiderMurphyIdiot
  • InsaneInsane Anomaly Join Date: 2002-05-13 Member: 605Members, Super Administrators, Forum Admins, NS1 Playtester, Forum Moderators, NS2 Developer, Constellation, NS2 Playtester, Squad Five Blue, NS2 Map Tester, Subnautica Developer, Pistachionauts, Future Perfect Developer Posts: 3,912 admin
    Brute wrote: »
    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.
  • BruteBrute Join Date: 2009-06-10 Member: 67778Members, Squad Five Blue, Reinforced - Shadow, WC 2013 - Shadow Posts: 138 Fully active user
    #131 is severe

    125. Bug: Colorpicker:
    • 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.

    131. Bug: Start editor, add package, close package edit view -> crash
Sign In or Register to comment.