Jump to content

admsve

Member
  • Posts

    28
  • Joined

  • Last visited

Reputation Activity

  1. Like
    admsve reacted to Hagbard in Call for Demeter-related questions   
    resolving the problems would probably not be too hard.
    here are some suggestions:
    1. territory costs should be cheap for the first tiles.. then increase exponetially.. stop the possibility to have players claim unlimited number of tiles using orgs/suborgs.
    2. delete all existing scan results and make it a lot harder to identify the mega tiles. make it impossible for single orgs/players to claim a high quantity of them. we've seen players finding patterns before, scanning full planets and being able to claim all undiscovered mega nodes of high value within months before.
     
  2. Like
    admsve reacted to NQ-Deckard in VOXEL COMPLEXITY AND THE VERTEX PRECISION TOOL   
    Voxels make up almost everything you see in the world of Dual Universe. Currently, most creations are made using the basic tools we provide with standard shapes such as cubes, spheres, cylinders, wedges, and tetrahedrons. 
     
    More intricate designs can be achieved through the art of ‘voxelmancy’ where players customize the shapes of voxels using a variety of methods and techniques based on how voxels react to each other when placed. This very advanced technique allows voxelmancers to place each corner of a voxel exactly where they want it. To do that, they use what is called a ‘voxel reactor’.
     

     
    Voxel reactors, as amazingly useful as they are, have three major drawbacks:
    They are time consuming to use. They are not very intuitive for beginners. They are laid out in a checkered pattern in all three dimensions.  
    The last item on that list poses some technical problems. 

    VOXEL COMPLEXITY
    When we are effectively applying a checkered pattern of voxels of different colors or even air, it creates a relatively large amount of small surfaces. This doesn’t really pose a problem for a single reactor, but can be a performance burden for some voxel libraries that consist of thousands of reactors.
     
    With more and more detailed constructs of complex design being built, it’s become problematic for the ‘mesh service’ system that generates the shapes that you see when not in build mode. On a few rare occasions, highly-detailed constructs may not render at all or their honeycomb will disappear. 
     
    To prevent this from happening, we will gradually implement a limitation to the complexity that can be created in a single chunk of voxels. It will start with a simple complexity gauge in Demeter:
    With the launch of Demeter, you will start by seeing a new feedback gauge while building which highlights the region you’re actively working on and will appear as a bar in the HUD that indicates the complexity level of that region as a percentage.  In a future update (exact update number still to be discussed), we will introduce the eagerly-awaited vertex precision tool (Known to many of you as the fabled vertex editor) as a way to ensure that the limitation to voxel reactors doesn’t hinder players’ ability to create amazing constructs in the game. (More on that below.) In a subsequent future (and yet undefined) update, we will enforce the complexity value limit to be 100% for any new voxel operations. As such, old constructs and blueprints will not be altered by this but may become unalterable if they are above the limit in a region. Rest assured that if you have an existing construct that’s above the limitation, you will still be able to use it as is.  
    With all that out of the way, let’s get to the fun part!

    THE VERTEX PRECISION TOOL
    There is currently a bit of a gap between learning how to build using the basic tools and more advanced voxelmancy techniques, something we’ve wanted to address for a long time. The introduction of the vertex precision tool in a future update will allow you to take any vertex (a corner of a voxel) and move it to a new location on any of its three axes inside the vertex's moveable area at different resolutions. This will provide an intuitive way that fills that crucial gap between basic building and advanced voxelmancy to fine-tune your builds.
     
    See the video below for a demonstration of how this works. Please keep in mind that the video only shows an early prototype, but we think it’s already promising enough to make you as excited as we are about the possibilities of this tool.
     
     

     

     
    VENI, VIDI, VOXIED
    I came, I saw, I voxeled 
     
    We hope that these voxelmancy changes, along with all of the great new Lua functions added in the Selene update, will inspire and encourage you to make even more amazing things than you already are. 
     
    Check out our Tutorials page for even more ideas and tips on using voxels to bring your creativity to life in Dual Universe. 
     
    As always, we’d love to hear your comments and answer your questions on the forum. 
     
  3. Like
    admsve reacted to EasternGamer in Lua Suggestion (General Function Structure + Camera Data)   
    Intro
    With the recent dev-blogs, I feel like there's been a change in attitude with Lua. Before, we basically never got changes to it or the changes were very minimal/incomplete. (*cough* character orientation *cough*)
    But, now that we're adding a bunch of functions to Lua, so much so that it's starting to get cluttered with really long function names, I think a general structure change should occur. A perfect example is camera data.

    Structure Change
    The core unit, control unit and system basically are filled to the brim with functions that don't really related to them, especially system.
     
    So, here I go with what I believe should happen:
    The creation of a "Construct" default slot. (No links required)
    The creation of a "Player" default slot. (No links required)
    The creation of a "Database" default slot. (No links required)
    The creation of a "Elements" default slot. (No links required)

    Construct Slot (moved to)
    This slot will handle everything to do with the construct, and only the construct. As the first dev-blog has shown, a fair number of things are irrelevant of the core, thus it doesn't quite make sense that we should still access the core for them.

    For example, world orientation of the construct is irrelevant to the core, and even ordinary orientation is irrelevant to the core since it is based off the orientation unit, a gyro or core.
    However, data which is more core-related remains, like direct calculations/measurements that you would imagine the core making (velocity, acceleration etc.).
     
    Player Slot (moved to)
    This slot will handle everything to do with the master player, the player who has executed the control unit. As you can guess, a fair number of functions are placed on the unit because of this. But, it sort of makes little sense beyond the fact that the player activated, not to mention to access any player related info, they want to prefix every function with MasterPlayer, a perfect example of how absurdly long it is getting is unit.getMasterPlayerWorldForward(), now tack on camera to it... unit.getMasterPlayerCameraWorldForward(). You get the point.
     
    Database Slot (moved to)
    This will consolidate any thing that essentially accesses a database, static or otherwise, for instance getting the player name, position, etc. It will be similar to the Lua version in our files, but be entirely made of native code, instead of Lua. This should help with Database.lua's semi-redundancy and inefficiency, aside from code length contraction.
     
    Elements Slot (moved to)
    This will consolidate any general element function that is normally accessed by the core. This will remove the need to basically prefix stuff with getElementDATAById(uid)
    Instead, you will simple say getDATAById(uid) or getDATA(uid)
     
    Keys
    Bad Name* (Italics, suffixed by one or more light yellow asterisks, name requires a change for consistency reasons)  ? Dev Blog Addition (Bold, prefixed by "New" emoji) moved to (Colour coded, moved to another slot) Suggested Addition (Bold, green)
    Core
    getData() getConstructMass() getConstructIMass() getConstructCrossSection() getMaxKinematicsParametersAlongAxis(taglist,crefaxis) getConstructWorldPos() getConstructId()  ? getConstructName()  ? getOrientationUnitId() getWorldAirFrictionAngularAcceleration() getWorldAirFrictionAcceleration() spawnNumberSticker(nb, x, y, z, orientation) spawnArrowSticker(x, y, z, orientation) deleteSticker(index) moveSticker(index, x, y, z) rotateSticker(index, angle_x, angle_y, angle_z) getElementIdList() getElementNameById(uid) getElementTypeById(uid) getElementHitPointsById(uid) getElementMaxHitPointsById(uid) getElementMassById(uid) getElementPositionById(uid) ? getElementForwardById(uid) ? getElementUpById(uid) ? getElementRightById(uid) getElementIndustryStatus(uid)* getElementTagsById(uid) getSchematicInfo(schematicId) getAltitude()  ? getCurrentPlanetId() g()** getWorldGravity()*** getWorldVertical()**** getAngularVelocity() getWorldAngularVelocity() getAngularAcceleration() getWorldAngularAcceleraton() getVelocity() getWorldVelocity()  ? getAbsoluteVelocity()  ? getWorldAbsoluteVelocity()***** getWorldAcceleration() getConstructWorldOrientationForward() getConstructWorldOrientationRight() getConstructWorldOrientationUp() getConstructOrientationForward() getConstructOrientationRight() getConstructOrientationUp() getPvPTimer() getPlayersOnBoard()****** getDockedConstructs()******* isPlayerBoarded(pid) isConstructDocked(pid) forceDeboard(pid) forceUndock(cid) getBoardedPlayerMass(pid) getDockedConstructMass(cid) getParent() getCloseParents() getClosestParents()  ? getParentPosition()  ? getParentWorldPosition()  ? getParentForward()  ? getParentUp()  ? getParentRight()  ? getParentWorldForward()  ? getParentWorldUp()  ? getParentWorldRight() dock(pid) undock() setDockingMode(mode) getDockingMode() getCoreStress() getMaxCoreStress() getCoreStressRatio() All Events *getElementIndustryStatus() -> getElementIndustryStatusById()
    **g() -> getLocalConstructGravityIntensity()
    ***getWorldGravity() -> getConstructWorldGravity()
    ****getWorldVertical() -> getWorldGravity()
    *****getWorldAbsoluteVelocity() -> getAbsoluteWorldVelocity()  (Swapping the Absolute Prefix with the World prefix sounds better and is probably more consistent)
    ******getBoardedPlayerIds()
    *******getDockedConstructIds()
     
    System
    getActionKeyName(actionName) showScreen(bool) setScreen(content) createWidgetPanel(label) destroyWidgetPanel(panelId) createWidget(panelId, type) destroyWidget(widgetId) createData(dataJson) destroyData(dataId) updateData(dataId, dataJson) addDataToWidget(dataId, widgetId) removeDataFromWidget(dataId, widgetId) getMouseWheel() getMouseDeltaX() getMouseDeltaY() getMousePosX() getMousePosY() getThrottleInputFromMouseWheel() getControlDeviceForwardInput()* getControlDeviceYawInput() getControlDeviceRightLeftInput()** lockView(state) isViewLocked() freeze(bool) isFrozen() getTime() getActionUpdateDeltaTime() getPlayerName(pid) getPlayerWorldPos(pid)   ? getOrganizationName(oid)   ? getOrganizationTag(oid) getWaypointFromPlayerPos() setWaypoint(waypointStr) getScreenHeight() getScreenWidth() getFov() print(msg) logInfo(msg) logWarning(msg) logError(msg) All Events *getControlDeviceForwardInput ->getControlDevicePitchInput
    **getControlDeviceRightLeftInput ->getControlDeviceRollInput
     
    ControlUnit
    exit() setTimer(timerTagId, period) stopTimer(timerTagId) getAtmosphereDensity() getClosestPlanetInfluence() ? getMasterPlayerPosition() ? getMasterPlayerWorldPosition() ? getMasterPlayerWorldForward() ? getMasterPlayerWorldUp() ? getMasterPlayerWorldRight() ? getMasterPlayerForward() ? getMasterPlayerUp() ? getMasterPlayerRight() getMasterPlayerId() getMasterPlayerMass() getMasterPlayerParent() ? getMasterPlayerOrgIds() setEngineCommand(...) setEngineThrust(taglist, thrust) setAxisCommandValue(axis, commandValue) getAxisCommandValue(axis) setupAxisCommandProperties(axis, commandType, targetSpeedRanges) setupControlMasterModeProperties(controlMasterModeId, displayName) getControlMasterModeId() cancelCurrentControlMasterMode() isAnyLandingGearExtended() extendLandingGears() retractLandingGears() isMouseControlActivated() isMouseDirectControlActivated() isMouseVirtualJoystickActivated() isAnyHeadlightSwitchedOn() switchOnHeadlights() switchOffHeadlights() isRemoteControlled() activateGroundEngineAltitudeStabilization(targetAltitude)* getSurfaceEngineAltitudeStabilization()* deactivateGroundEngineAltitudeStabilization()* computeGroundEngineAltitudeStabilizationCapabilities()* getThrottle() setSignalIn(plug, state) getSignalIn(plug) All Events *I got no idea what to replace those with, but the names are just weird, what's a surface engine, ground engine? Function name is super long.
     
    Construct
    getWorldOrientationForward() getWorldOrientationRight() getWorldOrientationUp() getOrientationForward() getOrientationRight() getOrientationUp()  getWorldPos() getId() ? getName() ? getOrientationUnitId() getMass() getIMass() getCrossSection() getLocalGravityIntensity()  
    Elements
     getIdList() getNameById(uid) getTypeById(uid) getHitPointsById(uid) getMaxHitPointsById(uid) getMassById(uid) getPositionById(uid) ? getForwardById(uid) ? getUpById(uid) ? getRightById(uid) getIndustryStatusById(uid) getTagsById(uid) getElementById(uid)  
    Player
    getId() getMass() getParent() ? getOrgIds() lockView(state) isViewLocked() freeze(bool) isFrozen() getFov() getHorizontalFov(bool) getVerticalFov(bool) getHeadlampState() setHeadlampState(bool) isSeated() getSeatId() getCameraView() getCameraWorldForward() getCameraWorldUp() getCameraWorldRight() getCameraWorldPos() getCameraLocalForward() getCameraLocalUp() getCameraLocalRight() getCameraLocalPos() ? getBodyPosition() ? getBodyWorldPosition() ? getBodyWorldForward() ? getBodyWorldUp() ? getBodyWorldRight() ? getBodyForward() ? getBodyUp() ? getBodyRight()  
    Database
     getPlayerName(pid) getPlayerWorldPos(pid) ? getOrganizationName(oid) ? getOrganizationTag(oid) getSchematicInfo(schematicId) getPlayerById(pid) getMasterPlayer() getOrganization(oid) getConstruct(cid)  
     
     
    Camera Data Explanation
    The camera data is pretty straight forward. I made an code example and explanation before this mess, I'll just paste that here lol.
     
    local player = player --> A tab which virtually represents the "player", it holds player related events and functions. local isSeated = player.isSeated() --> Returns true or false if the player is seated or not. local seatId = player.getSeatId() --> Returns the player seat ID if seated, otherwise nil. local headlampState = player.getHeadlampState() --> Returns the boolean of the avatar headlamp, on or off. player.setHeadlampState(not headlampState) --> Inverts the headlamp state. local camView = player.getCameraView() --> Returns 0 for first-person, 1 for third-person and 2 for fixed third-person. -- Consideration to have is that you can get into third person while using the normal avatar using an emoji. -- Why it is useful is so you can change the HUD you intend on using depending on if you're in those seperate views and if you should listen to mouse input for UI, etc. local camWorldUp = player.getCameraWorldUp() --> Returns the camera up vector in world coodinates. local camWorldForward = player.getCameraWorldForward() --> Returns the camera forward vector in world coodinates. local camWorldRight = player.getCameraWorldRight() --> Returns the camera right vector in world coodinates. local camLocalUp = player.getCameraLocalUp() --> Returns the camera up vector in local coodinates, relative to the build grid. local camLocalForward = player.getCameraLocalForward() --> Returns the camera forward vector in local coodinates, relative to the build grid. local camLocalRight = player.getCameraLocalRight() --> Returns the camera right vector in local coodinates, relative to the build grid. local camLocalPos = player.getCameraLocalPos() --> Returns the camera position in local coordinates relative to the build-grid (construct) center. local camWorldPos = player.getCameraWorldPos() --> Returns the camera position in world coordiantes. --<! Optionally, you could add a relative world position function which is relative to the construct center, but in world coordinates. Though, I feel it would be very niche !>-- --- Lastly, local camHFov = player.getCameraHorizontalFov(true/false) --> Returns the horizontal fov with a boolean parameter to determine if it is returned as a radian or degree format. local camVFov = player.getCameraVerticalFov(true/false) --> Returns the vertical fov with a boolean parameter to determine if it is returned as a radian or degree format.  
     
    Final Structure (No Formatting, mainly for glancing to see roughly the impact)
     
    Core
    getData() getMaxKinematicsParametersAlongAxis(taglist,crefaxis) getWorldAirFrictionAngularAcceleration() getWorldAirFrictionAcceleration() spawnNumberSticker(nb, x, y, z, orientation) spawnArrowSticker(x, y, z, orientation) deleteSticker(index) moveSticker(index, x, y, z) rotateSticker(index, angle_x, angle_y, angle_z) getAltitude()  getCurrentPlanetId() getConstructWorldGravity() getWorldGravity() getAngularVelocity() getWorldAngularVelocity() getAngularAcceleration() getWorldAngularAcceleraton() getVelocity() getWorldVelocity()  getAbsoluteVelocity() getAbsoluteWorldVelocity() getWorldAcceleration() getPvPTimer() getBoardedPlayerIds() getDockedConstructIds() isPlayerBoarded(pid) isConstructDocked(pid) forceDeboard(pid) forceUndock(cid) getBoardedPlayerMass(pid) getDockedConstructMass(cid) getParent() getCloseParents() getClosestParents() getParentPosition() getParentWorldPosition() getParentForward() getParentUp() getParentRight() getParentWorldForward() getParentWorldUp() getParentWorldRight() dock(pid) undock() setDockingMode(mode) getDockingMode() getCoreStress() getMaxCoreStress() getCoreStressRatio() All Events  
    System
    getActionKeyName(actionName) showScreen(bool) setScreen(content) createWidgetPanel(label) destroyWidgetPanel(panelId) createWidget(panelId, type) destroyWidget(widgetId) createData(dataJson) destroyData(dataId) updateData(dataId, dataJson) addDataToWidget(dataId, widgetId) removeDataFromWidget(dataId, widgetId) getMouseWheel() getMouseDeltaX() getMouseDeltaY() getMousePosX() getMousePosY() getThrottleInputFromMouseWheel() getControlDevicePitchInput() getControlDeviceYawInput() getControlDeviceRollInput() getTime() getActionUpdateDeltaTime() getWaypointFromPlayerPos() setWaypoint(waypointStr) getScreenHeight() getScreenWidth() print(msg) logInfo(msg) logWarning(msg) logError(msg) All Events  
    ControlUnit
    exit() setTimer(timerTagId, period) stopTimer(timerTagId) getAtmosphereDensity() getClosestPlanetInfluence() setEngineCommand(...) setEngineThrust(taglist, thrust) setAxisCommandValue(axis, commandValue) getAxisCommandValue(axis) setupAxisCommandProperties(axis, commandType, targetSpeedRanges) setupControlMasterModeProperties(controlMasterModeId, displayName) getControlMasterModeId() cancelCurrentControlMasterMode() isAnyLandingGearExtended() extendLandingGears() retractLandingGears() isMouseControlActivated() isMouseDirectControlActivated() isMouseVirtualJoystickActivated() isAnyHeadlightSwitchedOn() switchOnHeadlights() switchOffHeadlights() isRemoteControlled() activateGroundEngineAltitudeStabilization(targetAltitude) getSurfaceEngineAltitudeStabilization() deactivateGroundEngineAltitudeStabilization() computeGroundEngineAltitudeStabilizationCapabilities() getThrottle() setSignalIn(plug, state) getSignalIn(plug) All Events  
    Construct
    getWorldOrientationForward() getWorldOrientationRight() getWorldOrientationUp() getOrientationForward() getOrientationRight() getOrientationUp() getWorldPos() getId() getName() getOrientationUnitId() getMass() getIMass() getCrossSection() getLocalGravityIntensity()  
    Elements
     getIdList() getNameById(uid) getTypeById(uid) getHitPointsById(uid) getMaxHitPointsById(uid) getMassById(uid) getPositionById(uid) getForwardById(uid) getUpById(uid) getRightById(uid) getIndustryStatusById(uid) getTagsById(uid) getElementById(uid)  
    Player
    getId() getMass() getParent() getOrgIds() lockView(state) isViewLocked() freeze(bool) isFrozen() getHorizontalFov(bool) getVerticalFov(bool) getHeadlampState() setHeadlampState(bool) isSeated() getSeatId() getCameraView() getCameraWorldForward() getCameraWorldUp() getCameraWorldRight() getCameraWorldPos() getCameraLocalForward() getCameraLocalUp() getCameraLocalRight() getCameraLocalPos() getBodyPosition() getBodyWorldPosition() getBodyWorldForward() getBodyWorldUp() getBodyWorldRight() getBodyForward() getBodyUp() getBodyRight()  
    Database
    getPlayerName(pid) getPlayerWorldPos(pid) getOrganizationName(oid) getOrganizationTag(oid) getSchematicInfo(schematicId) getPlayerById(pid) getMasterPlayer() getOrganization(oid) getConstruct(cid)  
     
     
    Ending Notes
    It has taken me literally the entire day doing this, and even then I feel like I've missed a lot because I was literally looking at the entirety of Lua.
    I was planning on explaining all the changes and stuff, but my head is about to explode from doing this the entire day so not gonna. Lol.

    Tbh, if they implemented even a single one of these slots, I would be happy. I don't expect most of it to change.
    I would also, personally, like if these changes came out gradually, if any. I think if camera angles are added though, we must at least get the player slot, or similar global variable because of how long the variable names will end up getting.
     
    Obligatory @NQ-Ligo and @NQ-Deckard, I wish you find this helpful, even if you don't add even 1% of it xD

    Oh, and oops. Kinda broke the "one idea" rule... it's kinda a super idea though. Hope whoever od
  4. Like
    admsve reacted to NQ-Deckard in DEVBLOG: LUA IMPROVEMENTS AND CHANGES, PART 3   
    Lua is a real programming language that can be used in Dual Universe to bring dynamics and interactivity. Whether it is to fly a ship made in voxels or to add movement and functionality to a construct (such as controlling doors), Lua is everywhere. 

    If you haven’t read the first two devblogs in this series, here’s what you missed: 
    Part 1: Recent changes and additions, docking-related changes, and the deprecation of quaternions Part 2: Radar API changes and transponder API additions
    In Part 3, we’re wrapping up this round of Lua devblogs by taking a look at highly-requested features, an update to the database library, the in-game atlas, and the event handling system. 

    OTHER ADDITIONS
    We took the time to add a few minor features to the Lua following some popular requests that we felt would gel well with the other changes.
     
    <string> core.getConstructName() : Returns the name of the construct. <int> core.getCurrentPlanetId() : Returns the ID of the current close stellar body. <string> system.getPlayerName(<int> pid) : Returns the name of the given player if in range of visibility or broadcasted by a transponder. <list> unit.getMasterPlayerOrgIds() : Returns the list of organization IDs of which the player running the script is a member. <string> system.getOrganizationName(<int> oid) : Returns the name of the given organization, if known, e.g. broadcasted by a transponder. <string> system.getOrganizationTag(<int> oid) : Returns the tag of the given organization, if known, e.g. broadcasted by a transponder.  
    DATABASE LUA LIBRARY UPDATE
    With all of these other changes and improvements being deployed, it seemed a perfect time to update the local database library accordingly and to add some others based on players’ feedback.
    You will now find the following functions:
    <table> database.getPlayer(<int> pid) : Returns all information about a given player, identified by its ID. <table> database.getMasterPlayer(<table> unit) : Returns all information about the player running the script. <table> database.getOrganization(<int> oid) : Returns all information about the given organization, identified by its ID. <table> database.getConstruct(<int> cid) : Returns all information about a given construct, identified by its ID;  requires a radar to detect the construct. <table> database.getElement(<table> core,<int> uid) : Returns all information about a given element, identified by its ID, and requires a linked core unit.
    LUA ATLAS ADDITION
    Lua designers have indicated the need for an in-game atlas. With the addition of the getCurrentPlanetId function, we can make that available now.

    We’re pleased that we were able to stick close to a similar structure that players were already familiar with, but with certified values and refactoring, especially for localization aspects. 

    The text fields for the name, description, minerals, etc. are not strings but tables. This was done with the objective of providing simple information in the three languages we currently support: English, French, and German.

    With this atlas library, you will have the following information:
    <int> id : The id of the stellar body. <list> name : The name of the stellar body. <list> type: The type of the stellar body (planet or moon). <list> biosphere : The stellar body biosphere. <list> habitability : The level of habitability of the stellar body. <list> classification : The thermal classification of planetary habitability. <list> description: The description of the stellar body. <string> iconPath: The stellar body icon image path (i.e. to be used on screens). <bool> hasAtmosphere: True if the stellar body has an atmosphere. <bool> isSanctuary: True if the stellar body is a sanctuary moon. <bool> isInSafeZone: True if the stellar body is in the safe zone. <int> systemId: The stellar system id in which is the stellar body. <int> positionInSystem: The indicative position of the stellar body in the stellar system. <list> satellites: The list of IDs of the satellites of this stellar body. <vec3> center: The position of the center of the stellar body in world coordinates. <float> gravity: The gravitational acceleration at the nominal radius of the stellar body in m/s². <float> radius: The nominal radius of the stellar body. <float> atmosphereThickness: The atmosphere thickness in meters. <float> atmosphereRadius: The radius of the sphere of the atmosphere measured from the center of the stellar body. <float> surfaceArea: The nominal surface area for the stellar body. <float> surfaceAverageAltitude: The average altitude at the surface of the stellar body. <float> surfaceMaxAltitude: The maximum altitude at the surface of the stellar body. <float> surfaceMinAltitude: The minimum altitude at the surface of the stellar body. <float> GM: The standard gravitational parameter of the stellar body. <list> ores: The list of ores available on the stellar body. <int> territories:  The number of territories on the surface of the stellar body.
    Example of use:
    local atlas = require(‘atlas’) --You can access to any stellar body from its id : atlas[system_id][stellar_body_id] local alioth = atlas[0][1]  
    EVENT HANDLING LUA LIBRARY ADDITION
    To make it easier for players to organize and implement an event handling system, either for use on Lua screens or for various board systems, we added a new local Lua event library. This makes it possible to create events, associate actions to it, and manage these events and their emissions.

    Here is  a short documentation of this light library.

    Event
    Description: An event contains actions to be triggered on its emission.
     
    Properties:
    <table> actions: The tables of actions attached to the event.  
    Functions :
    event:emit(...): Emit the event and invoke attached actions with the given arguments. <bool, int> event:findAction(<string> id): Find a specific action associated with this event with the given ID. The function can take an action in argument to know if the action is attached to this event. Arguments: <string> id: The ID of an action. Returns: <bool> success: True if an action is found attached to this event. <bool> index: The index of the action found in the actions table of the event. <string> event:addAction(<any> call,<bool> enabled,<int> limit): Add an action to the event with the given arguments. Arguments: <object> call: The function or the thread invoked when the event is triggered. <bool> enabled: The boolean that indicates whether or not the action is enabled. <int> limit: The number of times the event can invoke this action. Returns: <string> id: The ID of an action. <nil> event:removeAction(<string> id): Remove the action associated with the event with the given arguments. The function can take an action object in argument.  
    Action
    Description: An action is defined by a callable object, a function, or a thread.
     
    Properties:
    <string> id: This is an ID that can be used later to refer to this action. <any> call: Invoked when the event is triggered. <bool> enabled: This boolean indicates whether or not the action is enabled. <int> limit: This property represents the number of times events can invoke this action. <int> nbCall: This property keeps track of how many times events have invoked this action. <float> interval: This property allows to limit the time interval between two calls. <float> lastCall: This property helps track the time of when we last called this action.  
    Example of use of the Atlas Library.
    Example of use of the Event Library.
     
    <BOOL> ARTICLE.ENDDEVBLOG()

    We hope you’ve enjoyed the Lua devblog series. Our work here is done, but yours isn’t. Our primary motivation for the blogs was to gather your feedback before perhaps considering further Lua changes and new features, whether for the API, as for the addition of additional libraries. Head over to the forum and join the conversation, share your thoughts and insights, and let us know what Lua-related improvements you’d like to see in the future. 
     
  5. Like
    admsve reacted to EasternGamer in DevBlog: Lua Improvements and Changes - Discussion Thread   
    Hi there, resident Lua programmer here... I have some questions probably a few others also have as well.

    Questions
    First Question:
    This would imply that it would be a constant based off the image. Did you mistakenly say "direction vector of the construct in construct local coordinates" when it should've been "direction vector of the active orientation unit in construct local coordinates"?

    Second Question:
    Is there one that is irrelevant of the active orientation unit?

    Third Question:
    The master player data, is this still for body orientation and position, or are we getting the camera data? I suspect it's the former for now since this was depreciating the old functions.
     
    Forth Question:
    Was going to ask something else but didn't have anymore to ask lol.

     
    End Remarks
     
    I honestly wouldn't mind a full Lua refresh to make things less cluttered. Like, using three functions to get orientation and these long function names could be slimmed down a lot.

    For instance:
    <vec3,vec3,vec3> core.getConstructWorldOrientation() : Returns the forward, up and right direction vectors of the active orientation unit in world coordinates.
    local forward,up,right = core.getConstructWorldOrientation() --Wham! One function.
    Lastly, despite me using quaternions, I agree with the removal of them. There needs to be consistency and the three vector orientation system is much easier to understand and is also extremely easy to convert to a rotation matrix.
  6. Like
    admsve reacted to UnCheat in DevBlog: Lua Improvements and Changes - Discussion Thread   
    Yea I hope that we could get a player camera rotation directions as well as camera type (1-st/3-rd person)
  7. Like
    admsve reacted to NQ-Deckard in DEVBLOG: LUA IMPROVEMENTS AND CHANGES, PART 1   
    We have been adding a lot of features to the Lua API following the additions of shields and core combat stress in addition to the docking and boarding changes. We have taken a lot of your feedback and suggestions into consideration and have made a few changes to improve some of the consistency and implementation of Lua.

    These changes are minor; we can't rework the whole Lua API without breaking most of your scripts. 

    With this in mind and to finalize the implementation of the Lua API associated with docking and future changes to other mechanics, we have decided to adjust a few parts that may be major for Lua creators, both for the addition of new features and the improvement and consistency of the API as a whole.

    In this first part of a three-part devblog, we’ll cover the recent Lua changes and additions, including some related to docking and the deprecation of quaternions. 
     
    You can read up on the other parts here: Part 2 & Part 3
     
    CHANGES AND ADDITIONS
    First, we have decided to rework the way the repositories associated with constructs and elements are managed.

    Previously, some functions returning position or orientation information referred to the center or even a corner of the construct, others to the position of the core unit in the construct.

    Going forward we have standardized everything. Once these changes go live, all functions will be based on the reference frame of the construct whose origin is the center of the build zone. Further, in order to guarantee the functionality of the flight systems and to safeguard the gyro unit, we have integrated in a clearer way of representing orientation.

    An orientation unit is an element that is used to define the orientation of your construct. There are two orientation units in the game, the core unit and the gyro unit. As a construct cannot exist without a unique core unit, the core unit is always the default orientation unit. By pressing F on a gyro unit, you can switch to using the gyro unit as the current orientation unit.

    You can see that the marker and arrow displayed when you enter the build mode will indicate the orientation given by the active orientation unit. 
    You can activate a gyro unit by pressing F on it and so use its orientation.
     
    See examples below:


    For these changes, we have added:
    <int> core.getOrientationUnitId() : Returns the UID of the currently active orientation unit (the core unit or the gyro unit). We have also modified the following functions:
    <vec3> core.getConstructOrientationForward() : Returns the forward direction vector of the active orientation unit in construct local coordinates. <vec3> core.getConstructOrientationUp() : Returns the up direction vector of the active orientation unit in construct local coordinates. <vec3> core.getConstructOrientationRight() : Returns the right direction vector of the active orientation unit in construct local coordinates. <vec3> core.getConstructWorldOrientationForward() : Returns the forward direction vector of the active orientation unit in world coordinates. <vec3> core.getConstructWorldOrientationUp() : Returns the up direction vector of the active orientation unit in world coordinates. <vec3> core.getConstructWorldOrientationRight() : Returns the right direction vector of the active orientation unit in world coordinates. <vec3> core.getConstructWorldPos() : Returns the position of the center of the construct in world coordinates (instead of orientation units position).
      REMOVAL OF QUATERNIONS
     
    Quaternions are the quotient of two directed lines in a three-dimensional space or the quotient of two vectors.  In looking at how players were using Lua and reading their feedback, , we realized that very few players were familiar with this mathematical notion of representing rotation. 
     
    Therefore, we decided to deprecate quaternions from the Lua API and instead expose the direction vectors of objects.
     

     
    While this leads to the addition and change of some functions, deprecated functions will remain backwards compatible and will display a deprecated message in the Lua console.
     
    <quat> core.getElementRotationById(<int> uid) : DEPRECATED <vec3> core.getElementPositionById(<int> uid) : Returns the position of the element, identified by its UID in construct local coordinates (instead of the construct corner). <vec3> unit.getMasterPlayerRelativePosition() : DEPRECATED <quat> unit.getMasterPlayerRelativeOrientation() : DEPRECATED And we have added the following functions:
    <vec3> core.getElementForwardById(<int> uid) : Returns the forward direction vector of the element identified by its UID in construct local coordinates. <vec3> core.getElementUpById(<int> uid) : Returns the up direction vector of the element identified by its UID in construct local coordinates. <vec3> core.getElementRightById(<int> uid) : Returns the right direction vector of the element identified by its UID in construct local coordinates. <vec3> unit.getMasterPlayerPosition() : Returns the position of the player currently running the control unit in construct local coordinates (relative to the construct center instead of the control unit). <vec3> unit.getMasterPlayerWorldPosition() : Returns the position of the player currently running the control unit in world coordinates. <vec3> unit.getMasterPlayerForward() : Returns the forward direction vector of the player currently running the control unit in construct local coordinates. <vec3> unit.getMasterPlayerUp() : Returns the up direction vector of the player currently running the control unit in construct local coordinates. <vec3> unit.getMasterPlayerRight() : Returns the right direction vector of the player currently running the control unit in construct local coordinates. <vec3> unit.getMasterPlayerWorldForward() : Returns the forward direction vector of the player currently running the control unit in world coordinates. <vec3> unit.getMasterPlayerWorldUp() : Returns the up direction vector of the player currently running the control unit in world coordinates. <vec3> unit.getMasterPlayerWorldRight() : Returns the right direction vector of the player currently running the control unit in world coordinates.  
    DOCKING-RELATED LUA API ADDITIONS

    With the new docking mechanic, we wanted to empower players to manage the parent-child relationship between constructs. 

    Some of the additions were added in  the Ares (0.26.12) update;  however, we still had more changes and additions planned and these will be included with the Lua changes release

    We have added and modified the following functions:
    <vec3> core.getVelocity(): Returns the construct's linear velocity, relative to its parent, in construct local coordinates. <vec3> core.getWorldVelocity(): Returns the construct's linear velocity, relative to its parent, in world coordinates. <vec3> core.getAbsoluteVelocity(): Returns the construct's absolute linear velocity in construct local coordinates. <vec3> core.getWorldAbsoluteVelocity(): Returns the construct's absolute linear velocity in world coordinates. <vec3> core.getParentPosition(): Returns the position of the construct's parent when docked in construct local coordinates. <vec3> core.getParentWorldPosition(): Returns the position of the construct's parent when docked in world coordinates. <vec3> core.getParentForward(): Returns the construct's parent forward direction vector in construct local coordinates. <vec3> core.getParentUp(): Returns the construct's parent up direction vector in construct local coordinates. <vec3> core.getParentRight(): Returns the construct's parent right direction vector in construct local coordinates. <vec3> core.getParentWorldForward(): Returns the construct's parent forward direction vector in world coordinates. <vec3> core.getParentWorldUp(): Returns the construct's parent up direction vector in world coordinates. <vec3> core.getParentWorldRight(): Returns the construct's parent right direction vector in world coordinates.  
    Questions? Comments? 

    We’re sure some of the Lua-enthusiasts in our community will have questions and comments about this blog. Post them here so our resident Lua expert, Ligo, can discuss them with you.
     
    Watch for Part 2 next week. It’s got great information about radar changes, the library database, an in-game atlas, and an event handling system. 
     
  8. Like
    admsve reacted to UnCheat in Lua API request: return view direction vector   
    As one of a few Augmented Reality HUD lua developer for DU I can tell that there is a big need of such functions as:
    1. getViewVector()
      It could return normalized direction vector in a construct local coordinates
    2. getWorldViewVector()
     It could return normalized direction vector in a world coordinates
    3. getPlayerCamera()
     It could return a number that represents a type of camera player is using (for example: 1-first person, 2-third person)

    It could really help to sync AR with game coordinates! And make way more great stuff even for popular 3-rd person mode/
    Currently at any lag we loose system.getMouseDeltaX(),system.getMouseDeltaY() data so the only way is to reset camera with lockView(1) that is not comfortable to any user. Also we can not make any 3-rd person AR because we can not predict 3-rd person view camera direction on camera switch or even detect camera switch.
    ARdemo.mp4
  9. Like
    admsve reacted to NQ-Pann in Market Clean-Up (Updated Oct 20, 2021)   
    Update 10-20-21 - REMINDER: These rules are still in effect and are now extended to mission hubs. 

    In an effort to improve the experience of visiting some of our most popular markets, we will be implementing a new set of rules for constructs left at markets. Enforcement of these rules will begin on the 3rd of September at 6pm UTC. (That’s one week from the date of this notification.)
     
    We want to encourage a free and open game environment for all to enjoy. It’s in the spirit of that goal that these measures are being put into place.
     
    Only ships are allowed on the market landing platform. Constructs must be parked outside the green perimeter line surrounding the main market building and the access ramp to the market. One container construct per entity (player or organization) will be allowed for the purpose of storage below the landing pads. Shop constructs, advertisements, and dispensers are not permitted at any markets. These should be placed on your own tiles or at districts instead. We would like to remind you that you now have the ability to place a “Welcome Visitors” marker on your territory.  Under no circumstances may player constructs intersect with the Aphelia constructs. Constructs at the Aphelia markets must be parked either on the landing platform or the ground around the Aphelia markets. Airspace within 2km of the market building must remain clear. XL screens and screen arrays are not permitted within 2km of the market building Constructs that violate these rules may be hidden, removed, or abandoned without warning. Novaquark reserves the right to move, hide, or delete constructs at its discretion, for example if they are designed to circumvent these rules or if they impact marketplace performance or usability.  
    To safeguard the performance of everyone visiting these locations, we strongly encourage players to adapt any screens and advertisements to use Lua based Render Script instead of SVG/HTML even if that is in the form of uploading an image of your SVG and then loading that into the Render Script.

    Join the conversation here.
     
  10. Like
    admsve reacted to NQ-Deckard in NEW VISUAL EFFECTS IN DUAL UNIVERSE   
    We recently introduced the first wave of an ongoing effort to enhance the visual effects (VFX) in Dual Universe, thanks to the integration of PopcornFX, a middleware solution for creating stunning particle effects. 
     
    Players celebrated the difference when the first VFX improvements debuted as part of the 0.25.8 Hermes update on June 18th. This video showcases just some of the cool new effects, from ‘sparklier’ particle explosions to ‘glowier’ holograms. 
     
     
    The Novaquark Art and Rendering teams took a few moments away from their visual ventures to talk a bit about the PopcornFX implementation and what it means for the DU community. 
     
    Q: How will Dual Universe players benefit from the new visual effects? 
    Our primary goals have been to improve immersion and increase the wow factor. Being an MMO, immersion is key, a layer of life added to our game. For that reason, we are always exploring different ways to improve graphics to make the world more believable and give it a sense of spectacle. Our new VFX are made with PopcornFX Editor. It gives us full control and makes it easy to experiment and iterate new versions that will improve the player experience.
     
    Q: Why did Novaquark choose PopcornFX?
    Dual Universe is being developed with Unigine, which we like since it allows us to do heavy modifications to achieve the desired results; however, those modifications have also prevented us from being able to benefit from Unigine’s latest visual improvements. PopcornFX is the perfect solution to fill that gap. It has exactly what we need technically for its implementation, top-notch visuals, and excellent performance results. (We promise they didn’t pay us to say this!)
     
    Q: Considering the proprietary technology behind DU, implementing off-the-shelf technologies can be tricky. What technical difficulties had to be overcome with this integration?
    It required several iterations and cross-team collaboration to ensure that integration was working properly so that it would be in an acceptable state for rollout to players. It first took the effort of the Rendering team to have the main pipeline working, from loading an effect file, launching the particle simulation, getting the buffer data back, and directing them to the right places and the right shaders. We’ve been able to build onto this and support more and more features requested by the Art team. We also worked with the Gameplay and Tool teams to supply a clean integration with variables from the game to provide a deep connection between the effects and the game itself by exposing all the parameters VFX artists can use.
     
    Q: Which VFX are we currently focusing on and what is the roll-out plan for future VFX updates?
    Our most recent update, Hermes, included a long list of our first PopcornFX-generated graphics. 
     
    Tools: harvest, mining, directional detector, scanners, deploy ground element, refuel, maneuver, flatten, build mode tools. Industries: assembly lines, refiners, electronics, chemical, refiner, glass furnace, smelter, honeycomb refiner, printer, metalwork.  Decorative constructs: plants, holograms. Miscellaneous: Arkship effects, elevators, an element explosion.  
    Our goal regarding VFX is to apply them in almost every aspect of the game; sometimes they may be quite noticeable and others may be so subtle they are almost imperceivable. The layering is what adds that necessary depth of flavor to be well-rounded. 
    We will continue to introduce new VFX to enhance the gameplay experience, for example the piloting experience and the PVP experience, and to breathe more life into some older elements that need it while introducing new elements along the way, too. We’ll also give some motion to the HUD and our complex interface that we know can really improve the immersion.
     
    Q: In addition to the VFX improvements, what other visual enhancements can players look for in the coming months? 
    Since we began using PopcornFX, we've been seeing the game world through a new lens, brainstorming the possibilities and prioritizing all the improvements we want to make. The stellar views within the universe will be even more stellar as our ‘biome beautification’ efforts continue. The compliments we’ve been receiving from the community have been inspiring and encouraged us to take DU’s visuals to the next level. 
     
  11. Like
    admsve reacted to NQ-Deckard in Play DU on any computer on GeForce NOW!   
    Novaquark is pleased to announce its partnership with NVIDIA GeForce NOW to make Dual Universe as accessible as possible to our players. GeForce NOW is NVIDIA's cloud game streaming service that instantly transforms nearly any PC, Mac or Chromebook into a powerful PC gaming rig.
     
    If your PC specs are below the minimum requirements for DU, this is for you!
     
    Dual Universe has been thoroughly tested to ensure the experience is optimal on GeForce NOW. You can now play DU at its best, in all its graphical magnificence.
     
    To do so, you will first need a subscription to Dual Universe. Then, simply head to the GeForce NOW website. GeForce NOW offers two membership options: Free and Priority.
     
    Anyone can sign-up for a Free membership, and start playing instantly. If you would like to upgrade your membership to experience the best of GeForce NOW, including priority access to game servers and extended session lengths, you can upgrade to the GeForce NOW Priority membership.
     
    Dual Universe awaits you, Novean!
     
  12. Like
    admsve reacted to Matches42 in Pending Operation   
    I thought PENDING OPERATION Alioth PENDING OPERATION was bad PENDING OPERATION PENDING OPERATION PENDING OPERATION.  After PENDING OPERATION taking a tour of PENDING OPERATION PENDING OPERATION the system PENDING OPERATION and dropping TCU's PENDING OPERATION PENDING OPERATION PENDING OPERATION PENDING OPERATION I realized PENDING OPERATION it's sooooooo PENDING OPERATION PENDING OPERATION PENDING OPERATION PENDING OPERATION PENDING OPERATION much worse PENDING OPERATION everywhere PENDING OPERATION PENDING OPERATION else.  
     
    Super PENDING OPERATION fun.  
  13. Like
    admsve reacted to Cheith in Highlight capability for terrain voxels that you can't see   
    Right now when flattening terrain it is pretty easy to get rogue voxels floating in the air. Many of these rogue voxels are easy to spot but some are not as they contain a tiny amount of terrain in them. Right now I have several on my base I cannot find. Give us a way to highlight them so that we can discover them and remove them.
  14. Like
    admsve reacted to NQ-Naerais in Play Nice   
    Dear Noveans, 
     
    We’d like to take a moment to talk about the communication on the forums and in Discord. We appreciate the passion each of you bring to our community and don’t want to diminish it; however, we’ve seen an increase in negativity, specifically attacks, unconstructive complaints, and disrespect to fellow players and our team. This is not okay. 
     
    We’ve always invited community members to speak their minds. We’d like to remind everyone that we require a certain level of decorum and respect. Participants in our community areas (forums, Discord, and our social media accounts) are expected to voice criticism and concern constructively and communicate with courtesy and respect.
     
    This is a warning that we won’t tolerate attacks on staff, volunteers, or members of this community. If you can’t play nice, and with respect, then this isn’t the community for you. 
     
    With love,
    SpaceMom
     
  15. Like
    admsve reacted to NQ-Naerais in Update to our community   
    This week we will be making some visible changes across the community areas of Dual Universe. While this is primarily affecting our forums, some changes to the community in general are included: 
     
    Forum restructuring and clean up EULA and Code of Conduct updates Additional improvements on the way Enforcement
    Bored Boards:
    The forums will be getting an overhaul over the next couple of weeks including the reduction and closure of some of the less active forum areas as well as an amalgamation of some of the remaining ones. This should help new and returning members of the community find the information they seek more quickly. We will be relocating some rarely-used sections into a read- only archive. 
     
    In addition, we will be cleaning up the sea of pinned posts. We may have developed a pinning addiction in the past, we’re ready to move on from that now. 
     
    We realize changing a community layout can feel overwhelming and chaotic, we are hoping to reduce the clutter and make it easier to get what you’re looking for faster! This isn’t the only plan we’re working on, but more on that later.
     
    We will also be reopening the moderator application in the coming weeks. If you’ve ever wanted to get your mod on, this will be the time to apply. 
     
    The Legal Stuff (EULA and Code of Conduct):
    We have updated sections of the EULA and Code of Conduct to make it clear that we will not tolerate real money trading (RMT) within Dual Universe. Please take a few moments to review the changes.
     
    Idea Box (forum):
    We know there have been some recent concerns specific to this forum and we would like to address them. 
     
    First up, and most importantly, we want to thank everyone who has posted in the Idea Box. You have provided our team with hours of entertainment, amazing suggestions and wonderful creativity; however, we have heard a rising number of complaints about not seeing those ideas manifest within the game. We assure you that every idea is read, but not every idea can be implemented. And remember that game development takes time. A lot of time.
     
    Because we have so many ideas coming at us from the Idea Box, the UpVote page and more, we would like to remind and reassure you that our team is currently focused on the existing game plan and updating it to make sure that the performance is solid and that the game is fun to play. As we’ve said in recent blogs, you may not see a lot of obvious changes frequently, but we are hard at work behind the scenes.
     
    We are going to restrict the Idea Box for the immediate future to feedback regarding the existing game loops and elements only. This is not to say we won’t look outside of that, but at this time we have a backlog of content and ideas and need to focus on the existing mechanics. Once we've cleared the backlog, we'll be in a better position to consider suggestions.

    Enforcement:
    Now that the adaptation period of post-alpha and post-NDA lift is behind us, we are going to put more emphasis on the enforcement of our policies and tighten the consequences for people violating them. We are doing that in the spirit of continuing to build a welcoming and tolerant community of players.
     
    Until then, thank you for your patience and patronage.

     
  16. Like
    admsve reacted to GraXXoR in 'Fetch Ship' feature completely useless when ship is stuck in air above 4km !   
    Cool story, bro ? but not quite correct.
     
    Despairing, maybe, but desperate? Not really. 
  17. Like
    admsve reacted to joaocordeiro in 'Fetch Ship' feature completely useless when ship is stuck in air above 4km !   
    I never had a de-sync making me fall from a ship. I did fall many times from ships for being careless. 
     
    I had this happened because of 4 issues:
    1 - player forgot to buy a respawn node
    2 - respawn node was not activated
    3 - respawn node got destroyed in crash
    4 - server had some heavy maintenance and respawn nodes were reseted. 
     
    The only thing that is actually NQ fault is the 4th.
    Every thing else was the player's responsibility. 
     
    Also, as was already stated, NQ will respond to any uncommon bugs. And if this occurrences become frequent, then making NQ aware of the problem is beneficial to the game. 
  18. Like
    admsve reacted to Dimencia in DEVBLOG: DOCKING AND BOARDING REVAMP - Discussion Thread   
    Damn you people are whiny.
     
    This change is awesome.  Docking is simplified, not made harder - much better than the maneuver tool jankiness.  Though floating 'docked' ships may look a bit odd.  
    The only form of 'boarding' DU has today is where you take an alt and logout on someone's ship when they're not online.  Which part of that is fun?  It is very nice that NQ has finally cleared that up, so people like Markee aren't constantly being harassed, and until we have AvA there's no downsides.  We may see some changes once AvA is in, who knows
  19. Like
    admsve reacted to Davian_Thadd in DEVBLOG: DOCKING AND BOARDING REVAMP - Discussion Thread   
    Globaly, I like the idea !

    The docking and boarding rights use is logical.
    The build helper addition is good to be able to monitor it.

    Anyway ... the docking procedure become more "complex", more steps. A thing that could be not appreciated. Could be may be improved later with a right management with Lua, to be able to implement board system asking docking request and autorize by Lua ...etc

    The boarding system ... humm.. on one side, it's good to control who is in your construct. And think about expositions with the "deactivated" status is good.
    Just certainly consider to reauthorize entering of players in active constructs when we will have to ways to defend, with the AvA.

    Currently, considering there is no ways to act against a players, I'm for !


    Good addition ! ?
  20. Like
    admsve reacted to ManfredSideous in DEVBLOG: DOCKING AND BOARDING REVAMP - Discussion Thread   
    Really like this devblog.  Repulsing ships that try to ram you in pvp will be nice.  As people build "kinetic impactors" to try to intercept a larger construct where the aim is to get the larger construct to collide with the kinetic impactor destroying the target.  The other thing in PVP it is common for people to logoff chars on rival pvp ships so they can easily track locations.  Furthermore people taking this step further by carrying as much weight in nanopacks to weigh down a target construct to reduce its performance.  Very cool I really like this thumbs up NQ.
  21. Like
    admsve reacted to NQ-Deckard in DEVBLOG: DOCKING AND BOARDING REVAMP   
    Space can be lonely, and, if some adages are to be believed, no one can hear you scream out there. You may want to bring along some friends, maybe not so much for the screaming but for sharing fuel and good times. That’s where docking and boarding comes in. 
     
    Previously referred to with the blanket term “parenting”, breaking them off as boarding and docking clarifies what they are and what they do. Just as the name implies, boarding allows passengers to come aboard your ship. Docking makes it possible to have ships connected to other ships, even when both are moving. This boarding/docking relationship basically has the same functionality and behaviour as before but with the added benefit of rights management.
     
    In its original design, boarding or docking a construct was not consensual. Neither the player who owned the construct being boarded/docked nor the player whose construct was being attached to another could decline. They may not have even been aware it had happened in some cases, it simply occurred due to their proximity. 
     
    This was a problem for a few reasons, most notably that it opened the door for bugs and exploits. In addition to negating those, revisiting the feature also gives us the opportunity to make it more intuitive and purposeful. 
     
    ASSIGNING RIGHTS
    Owners can use the Rights & Duties Management System (RDMS) to assign Right to Board or Right to Dock to their constructs that will let others board or dock, or to forbid such requests. 
     
    Dynamic constructs have the ability to move, as opposed to static constructs - like buildings - that are immobile. With the necessary rights, avatars will be able to board dynamic constructs, and smaller dynamic constructs (let’s call them shuttles) will be able to dock with bigger ones (aka carriers). When boarded or docked, the player or the shuttle moves with the carrier, and their mass is added to the carrier’s physics. 
     
    A player or a shuttle will need to be near the carrier in order to board or dock, it can’t be done from a distance. The distance is commiserate with the size of the target vessel, the minimum distance being 32m and 128m being the maximum. 
     
    BOARDING
    Players are able to board any inactive dynamic construct. This makes it possible for them to tour constructs on display in a marketplace or the like. The construct will go into the “active” state when the owner or someone else with piloting rights jumps into the driver’s seat, and unauthorized passengers will be automatically ejected.
     
    If a player enters a dynamic construct with the proper rights or when the construct is inactive, they will become boarded and can move freely around the construct. 
     
    The UI display may look something like this: 

    This is a sample of the UI that is still in progress 
     
    If the construct is active and the player attempting to board does not have the necessary right to board, they will be repulsed. The effect is similar to hitting an impassable barrier with no damage taken. The UI display may look something like this:

     
    DOCKING
    Once shuttle pilots with the necessary rights are within range, they can manually dock to a carrier. This is done through a contextual menu that is accessed via right-click. The shuttle will then be invisibly tethered to the exterior of the carrier. 

     
    Without that clearance, the shuttle will be repulsed.

     
    Authorized shuttle pilots will receive an opt-in confirmation to signal when they are within docking range. 

     
    The “Docking” widget in the piloting UI informs the pilot of the shuttle when they are in docking range through this small open chain link icon.
     

    This is a sample of the UI report to show a shuttle’s docking status.
     
    PARENTING ADVICE
    The owner of the carrier is considered the parent, and those who are granted boarding or docking rights are children.   
    Just as real-world moms and dads, construct owners can give their “kids” the old heave-ho when it’s time for them to leave the nest and fly solo. This is done in a Build Helper’s submenu where all boarded players and docked shuttles are listed.
     

     
    Buh-bye! Boarded avatars can be ejected at any time directly through the carrier’s Build Helper interface. 
     
    This results in ejected players suddenly finding themselves adrift, possibly in deep space. Here, they have two options. Jetpack to a safe place. Depending on the distance, this could take quite a while; however, it’s safe (they can’t be attacked) and they will arrive with the inventory in their nanopack. The second option, suicide, will get them on terra firma faster, but they will lose whatever they were carrying. Probably a good idea to stay on the good side of the carrier captain to avoid being in this predicament. 
     

     
    With a few simple clicks, the carrier pilot can easily de-dock shuttles, too. 
     

     
    TAKE IT FOR A SPIN
    These changes will be featured in an upcoming release on the public test server (PTS). We highly encourage our community to explore it when it’s available, then let us know what you think about the ease of use and convenience. Until then, feel free to join the discussion on our forums.
     
  22. Like
    admsve reacted to Cheith in Vegetation Tools!   
    Can we please get some tools to add some vegetation back once we have built a base! Generally you end up flattening or deforming a large area which extends past the perimeter and it would be nice to be able to terraform it to a soil of choice and add back grass, trees, etc!
  23. Like
    admsve reacted to NQ-Naerais in Market Clean Up - Today!   
    Despite our recent efforts to expand and clear out Market 6, we are still getting reports about performance and clutter. We want to assure our players that we understand your frustration and are still working to find better permanent solutions. 
     
    Meanwhile, we will be addressing clutter across Alioth this weekend. Our plan is as follows:
    Dynamic constructs that have not had direct interaction with their owner over a set duration (currently 30 days*) will be hidden.  Constructs at the market that violate our rules,  Code of Conduct and EULA will be removed.
    If your construct is hidden, you can unhide (recover) it by using the Fetch tool. To do this, right-click on it in the Construct list on your Map screen. Any constructs that you own, whether visible or hidden, will appear on this list.
     
    Fetch functionality now works for organization-owned constructs as well. For hidden constructs that belong to your organization, your legates can retrieve them via that same functionality. 
     
    Our customer support team is at the ready if you still need assistance recovering your constructs. Simply ping our Live Support staff in the in-game help chat with “@GM” or file a ticket on our support page and we will dispatch help right away!
     
    Please note that this is intended only as a temporary measure to aid performance and improve your experience when visiting these areas. 
     
    We look forward to seeing the results from these changes over the weekend.
     
    May your frames be plenty.
     
     
    *Duration may change based on our findings 
  24. Like
    admsve reacted to GraXXoR in Is my stuf still in the Universe?   
    Yes. Even if you parked your stuff right in the middle of a market place platform and left it there for months...
     
    even if you were blocking other people from landing on the platform...
     
    even if you haven’t logged in for a quarter of a year and others’ numerous constructs were causing players’ computers to lag and their ship to plummet into the ground and explode...
     
    even if you left automated scripts running that cause players’ computers to act up and throw errors into the LUA session panel every time they try to pass by...
     
    even if it’s plastered with screens playing Rick Astley on loop...
     
    even if something like a corrupted voxel in your ship caused their client to crash to desktop every time they visit the site. 
     
    even if you pasted a randomly-generated, 24 character string that you could not possibly remember as your password, change your email address then delete the game from your hard drive... and swear never to touch the game again...
     
    even then, at this moment in time: Your.stuffz.will.still.be.in.the.game
     
    (I’m not saying *you* did all that, just giving an example) ?
  25. Like
    admsve reacted to NQ-Naerais in Why Does NQ scare away new players?   
    I don't have a lot of details to share just yet but we will release it in a blog when ready. 

    We ARE working on a revamp to the FTUE (or First Time User Experience) to make it quicker and easier to get through so that you can get to playing or join friends faster. 

    We know parking is an issue at the markets and we're working on a long term solution, for now however we only have temporary fixes. We are aware this is a major pain and are working on it.  That goes beyond just the markets but 'stuff' left laying around in general. 
×
×
  • Create New...