HeroEngine Forums
Welcome, Guest. Please login or Register for HeroCloud Account.

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - GFG_Ulfrpsion

Pages: [1]
So I've got a few common fields to the player and NPCs which are stored on the E_CommonCharacter. I'd like some of those values to remain consistent for the player through play sessions, but I can't seem to get the fields to reverse replicate for the player. For example, I'd like the wealth or hitpoints to save past log-in sessions.

I've set the server and client destinations for the fields and classes as well as set the fields to reverse replicate, but it just won't do it. I've also added in as part of the post-area load process adding the player along with the client ID for reverse replication but that doesn't seem to help either.  I've made specOracles and had their instances reverse replicate in the same manner that I'm going about reverse replicating the fields on the player character, but I can't seem to figure out why it is not saving the information. Any help in understanding what I need to do would be deeply appreciated.

I should note that I've also looked in server scripts referencing variables from the E_CommonCharacter class. Their changes all seem to be handled as cmds, and the E_playerCharacter doesn't seem to utilize reverse replication for me to mimic, so I'm stuck.

I'm having a problem where data nodes that I've associated with the character are being released post area creation and I can't quite seem to figure out why.

I got from character selection to the clean test area. My nodes replicate to the character only at the Character Selection when it's being purged, and then release before anything else happens. When the character moves to the next area, the replication is not called on area enter, and I can't figure out why it's not being called.

I'm assuming it's because when the nodes are replicated, I do a soft association on the client with the E_playerCharacter object, and those associations are lost post character selection?

I call the replicateNode method within the HE_PostEnteredArea() method in server script, which should replicate the nodes to the E_playerCharacter which handles the replicated nodes in the _OnReplicationNodeAdded() method in the client....only it's only calling it as the Character Selection area is being purged. You can see it in the consol messages I've included below:

Code: [Select]
14:25:24: SYSTEM:System:ActivateAreaSpec 3758002374 assigning ID 1 instance 50
14:25:24: System:SetSkyDomeAsset 0 into Auto in Character Selection
14:25:24: SYSTEM:System:Just received an area.dat file '\world\livecontent\systemgenerated\3758002374\AREA.DAT'
14:25:24: SYSTEM:System:Character Selection (3758002374) activate
14:25:24: System:SCRIPT[_characterSelectionClassMethods]:Got updated names...
14:25:28: SYSTEM:System:SUA purging active area
14:25:28: SYSTEM:System:Character Selection (3758002374) PURGE
14:25:28: SYSTEM:System:Purging EnviroSchemes
14:25:28: SYSTEM:System:Released area 51
14:25:28: SYSTEM:System:LR:setDefaultCacheSize
14:25:28: SYSTEM:System:LR:setDefaultCacheSize done
14:25:28: System:SCRIPT[E_playerCharacterClassMethods]:Node added on Replication
14:25:28: System:SCRIPT[E_playerCharacterClassMethods]:Node is: 9223372064304664349
14:25:28: System:SCRIPT[E_playerCharacterClassMethods]:Node added on Replication
14:25:28: System:SCRIPT[E_playerCharacterClassMethods]:Node is: 9223372064305664354
14:25:28: System:SCRIPT[E_playerCharacterClassMethods]:Skill source node: 9223372064304664349
14:25:28: System:SCRIPT[E_playerCharacterClassMethods]:Skill added to node: 9223372064304664349, SkillName is:Unarmed
14:25:28: System:SCRIPT[E_playerCharacterClassMethods]:Node added on Replication
14:25:28: System:SCRIPT[E_playerCharacterClassMethods]:Node is: 9223372064305664355
14:25:28: System:SCRIPT[E_playerCharacterClassMethods]:Skill source node: 9223372064304664349
14:25:28: System:SCRIPT[E_playerCharacterClassMethods]:Skill added to node: 9223372064304664349, SkillName is:1-Handed
.....//runs through a series of lightweightcommands here//
14:25:28: System:SCRIPT[E_playerCharacterClassMethods]:On field updated! E_CharacterSkillsTotal
14:25:28: System:SCRIPT[E_playerCharacterClassMethods]:Skill List size: 2
14:25:28: !ERROR!HeroScript::HeroMachine::ScriptError:GOM::setPropertyOnNode (11133): requested node ID (0) not found while setting node property "Behave"
14:25:28: !ERROR!System:SCRIPT ERROR: GOM::setPropertyOnNode (11133): requested node ID (0) not found while setting node property "Behave"
11/08/2012 14:25:23
Call trace:
  Script E_equipmentPropBucketClassMethods line 35 me[1000000205]
  Script _BasePropBucketClassMethods line 53 me[1000000205]
starting method/function ASSETSPECREADY
starting me[id=1000000205 class=E_equipmentPropBucket]
14:25:28: System:SCRIPT[E_playerCharacterClassMethods]:System. Wat r u doin. SYSTEM. STAHP.
14:25:28: System:SCRIPT[E_playerCharacterClassMethods]:Trying to release Skill replicated nodes for destruction
14:25:28: System:SCRIPT[E_playerCharacterClassMethods]:System. Wat r u doin. SYSTEM. STAHP.
14:25:28: System:SCRIPT[E_playerCharacterClassMethods]:Trying to release Skill replicated nodes for destruction
14:25:28: System:SCRIPT[E_playerCharacterClassMethods]:System. Wat r u doin. SYSTEM. STAHP.
14:25:28: System:SCRIPT[E_playerCharacterClassMethods]:Trying to release the E_playerCharacter node for destruction
14:25:28: SYSTEM:System:Reset the synchronized clock.
14:25:28: SYSTEM:System:ActivateAreaSpec 4611686018427637930 assigning ID 4611686018427637930 instance 51
14:25:28: System:SetSkyDomeAsset 0 into Auto in Clean Test
14:25:28: SYSTEM:System:Just received an area.dat file '\world\areas\4611686018427637930\AREA.DAT'
14:25:28: SYSTEM:System:Clean Test (4611686018427637930) activate
14:25:28: !ERROR!System:Replication error: Replication error with node 9223372064351664342 'field ID: 9223372059571664325 not present in HeroClass(4611686018427647914)::getField on node 9223372064351664342' doing ReplicationGroupBase.cpp(2056):pVar = pNode->getField(mFieldBeingSet)
14:25:28: System:SCRIPT[LightweightEventsClassMethods]:Adding Event: xpUpdated
14:25:28: System:SCRIPT[LightweightEventsClassMethods]:Adding Event: levelUpdated
14:25:28: System:SCRIPT[LightweightEventsClassMethods]:Adding Event: nameUpdatedSB
14:25:28: System:SCRIPT[LightweightEventsClassMethods]:Adding Event: updateMindMax
14:25:28: System:SCRIPT[LightweightEventsClassMethods]:Adding Event: updateMindCurrent
14:25:28: System:SCRIPT[LightweightEventsClassMethods]:Adding Event: updateMindWounds
14:25:28: System:SCRIPT[LightweightEventsClassMethods]:Adding Event: updateBodyMax
14:25:28: System:SCRIPT[LightweightEventsClassMethods]:Adding Event: updateBodyCurrent
14:25:28: System:SCRIPT[LightweightEventsClassMethods]:Adding Event: updateBodyWounds
14:25:28: System:SCRIPT[LightweightEventsClassMethods]:Adding Event: updateLimbMax
14:25:28: System:SCRIPT[LightweightEventsClassMethods]:Adding Event: updateLimbCurrent
14:25:28: System:SCRIPT[LightweightEventsClassMethods]:Adding Event: updateLimbWounds
14:25:28: System:SCRIPT[_GUITabClassMethods]:_tab has no tab/panel associations, or more than one!
14:25:28: !ERROR!HeroScript::HeroMachine::ScriptError:Could not find ownedPanel for tab: _tab
14:25:28: !ERROR!System:SCRIPT ERROR: Could not find ownedPanel for tab: _tab
11/08/2012 14:25:23
Call trace:
  Script _GUITabClassMethods line 202 me[id=1000006772 class=_GUITab]
  Script _GUITabClassMethods line 147 me[1000006772]
  Script _GUITabbedParentClassMethods line 54 me[1000006762]
starting method/function ONCONTROLBUILD
starting me[id=1000006762 class=_GUITabbedParent]
14:25:28: System:SCRIPT[E_playerAccountClassMethods]:My plyer ccount id: 0
14:25:28: System:SCRIPT[E_playerAccountClassMethods]:My name? :newtest
14:25:28: System:SCRIPT[E_playerAccountClassMethods]:My skills total: 0
14:25:28: System:SCRIPT[E_playerAccountClassMethods]:A group was added to the playet account
14:25:28: System:SCRIPT[E_playerCharacterClassMethods]:On field updated! E_experiencePoints
14:25:28: System:SCRIPT[E_playerCharacterClassMethods]:Skill List size: 0

GUI Creation / [Resolved] Hide or show GUIs
« on: Nov 02, 12, 02:58:05 AM »
Does anyone know of a way to hide or turn the visibility of individual panels off or are layers the only way to do that?  I'm finding that as I am creating panels, and tying in light weight events to each panel, building the panel on the fly causes a significant pause as I start to expand my character data. I'd like to just turn the panels off instead of rebuilding so that I reduce calls to the lightweight event system.

I'm having some trouble finding a good bit of information on this and was wondering what others did? I've got a replication group being created for a series of spec derived objects I've created on the server which are hard associated to the character. Now I need them to replicate to the client. I'm not ready to tackle other entities being aware of this information through spacial awareness, I'm just trying to get it onto the client first.

I assume on entering an area, I'm going to need to call something like this?
Code: [Select]
method addClientReplication()
 spatialEntity as ID = me
  if me is kindof _playerCharacter
    spatialEntity = me.getMyAccount()
 myCachedReplicationGroup._addClientDestination(account as ID, spatialEntity as ID)

if this is about the case, how am I to get the account and spatialEntity as an ID for the player's character? Will the ID of .getMyAccount from the _playerCharacter class methods script in the server work for these IDs?

As well, to test if the replicated objects are being received on the client, how can I query the replicated objects when received?

I know I can use to trigger when I've replicated the group:
Code: [Select]
method _OnReplicationGroupAdded()

But is there a specific method I haven't found yet that can query the secondary replicated objects and get a noderef to them?

Hopefully someone will have an answer. I assume it's pretty simple yes or no.

If I am creating a mutable SpecDerivedObject, and I wish for the GLOMed Decorator's fields to replicate to the client. will following the Class Replication Parameters (http://wiki.heroengine.com/wiki/Class_Replication_Parameters), replicate the field values for the mutable SDO?

For example, I have a skill SDO that creates and attaches to the player character on the creation of a new player character. If I wanted the fields of the SDO to replicate to the player character on the client, by following the replication procedure for the field values on the GLOMed Spec Decorator and then if I were to update the SDO's Decorated Fields (server-side), would these replicate to the client if I point the fields to a client-side copy of the Decorator (assuming my SDO on the client creates and GLOMs these Decorator classes on the initialization of the SpecDerivedObject)? By creating multiple mutable instances of the Spec that the character has, by changing one replicated field, it will replicate properly to the client's instance as part of the function of replication, correct and not replicate to every instance of the SDO?

-1-handed melee combat is a Skill SDO, with the GLOMed Class "SkillLevelSpecDecorator".
-SkillLevelSpecDecorator has a field called Level, and methods to adjust the level. It has a client side copy. The field changes on the server point to SkillLevelSpecDecorator.
-2-handed melee combat is also a Skill SDO with the GLOMed class "SkillLevelSpecDecorator" that is attached to the player.
-A player "Levels up" their 1-handed melee combat skill from 1 to 2.
-By changing the server SDO "1-handed melee combat" on the player, will this replicate to the client for both the 2-handed melee combat and 1-handed melee combat making them both level 2, or just the 1-handed melee combat skill SDO? (i.e. is it replicating to the GLOMed class, or the instance of the GLOMed class).

I assume that it would replicate to just the instance because GLOMing adds the fields and methods of itself to the node, extending the node or node instance?

Apologies if that confuses anyone--it sure has me confused.

Scripting & Programming / [Resolved] Question about Spec Oracles
« on: Mar 14, 12, 02:22:39 PM »
I'm working on creating my first Spec Oracle. I've been able to get it functioning, creating Specs, etc. But, Add/Edit a Spec GUI, I can't adjust or change the Name and Description of the Spec. I assume this is because the Spec class needs to have a name and description field? Possible DisplayName and DisplayDescription fields that already exist? It is somehow getting the name DefaultSpec# where # is the # of the spec I've created. Any ideas? This seems to be skipped in the wiki so I'm a bit confused.

In the game my team is developing, we have a skill system that utilizes 60 different skills each with their own independent level. We were considering using a Lookuplist for the character and passing it back and forth between the client and server, but that seems a bit unrealistic. Has anyone had experience passing a lookuplist to the client that could maybe give me some insight? Has anyone developed a skill system rather than a class system and have some input on how you managed that data?


Scripting & Programming / [Resolved] Red GUI Box
« on: Feb 12, 12, 01:38:46 PM »
When I create a GUI in my E_PlayerAccountClassMethods script (any GUI, could even be a duplicate of the GUIs already created), I produce a solid square red box. What is the general cause of this? It can happen with any gui.

for example, this also produces a red box:
Code: [Select]
someduplicategui as Noderef of Class E_StatusBar

someduplicategui = CreateNodeFromPrototype("E_StatusBar")
someduplicategui.build = true
someduplicategui.position.x = 50
someduplicategui.position.y = 50

GUI Creation / [Resolved] Bring a GUI to the front on Build?
« on: Feb 11, 12, 03:11:20 AM »
Does anyone know of a way to bring a GUI window the very front of the view-port on build so that it appears above other GUI windows already built?


So, I've been working on trying to define the best method to manage my game's item system. I believe I've been able to boil it down to managing/persisting items on a System Area, and replicating the items of interest to the client in a character's cache for inventory items, etc.

I imagine that utilizing a system area will be what I need because I have highly mutable data that must have read/write access and players can communicate with this data regardless of what area they are residing in.

The problem I'm having is that I can't seem to find much in the wiki about creating system areas. I assume from what I've read that a system area is a loose definition for an area server that is utilized only as a process. For my purposes, I would create an area, and then a script utilizing _OnWorldLoad() to LaunchAreaServer(areaID, instanceID) where areaID is the area I've created to manage my items. I would then take the area's rootnode and attach items as nodes with a base hard association to the root node of this area, and glom a manager class to the area to handle factorying these items onto the area root from clients' remote calls. Am I understanding this correctly, or is it all going well over my head?


So in the game I'm developing, one of the key components is a crafting system with most items having a standard set of mutable data. Each item has about 10-12 mutable fields that take some form of input from the player, and each item must allow for persistence.

I've run through the forums and wiki trying to gather as much information as possible about what would be the hurtles with such an issue and how to go about developing such a system.

From what I understand, I'm going to need to create a system area and store these persistent items under the area's root node. What I can't seem to wrap my mind around is:

  • If I create a system area to manage all items players create; as players join the instance to update their inventory/check an auction house/any reason they need persisten item definitions, are area instances spun up to manage the load of many players accessing this information automatically? If so, how can the instances of the system area update it's node information when items are added, edited, or removed? I assume this involves developing some sort of synchronization method to replicate this new data to each instance of the area?

  • When the world server is brought down, how do I gather these mutable item definitions when it is brought back up? I can't seem to find much about what happens to persistent nodes when your bring the GOM back up from a period of being down. I assume that since these persistent nodes are stored in the area server's local GOM, it would just instantiate that stored information when the area server is brought back up?

  • From what I've read, for the data to persist, it must be done through server-side script. Makes sense, but what is confusing is that I've read both HSL can and cannot be used to modify fields on a node--an important part of the item system. If the client creates the node, or needs to modify the node, what process would I take to create or edit the persistent nodes?

  • Since I'm already on the topic of system areas, in reference to the $EDIT system node for an area, I can't seem to find anything about players being able to utilize the $EDIT system node--only that they can't or shouldn't. But say I have a structure, like a merchant stall, that a player has created and I want to allow them to place the merchant stall mesh in the game area. I assume to place the mesh I would need to generate a class to store the object's persistent  vector3 information, and then reference the mesh from a spec (since I don't want them to upload the mesh, but place a mesh already in the game). But to actually place the mesh, I would need to give the player access to the $EDIT system node of the area? After they've placed the item I would need to push it to all instances of an area if any are up, and I should probably look to this for that information: [url=http://wiki.heroengine.com/wiki/Replication_Tutorial]http://wiki.heroengine.com/wiki/Replication_Tutorial[/url]
    I'm guessing to manage these placed items, I would need to follow a process similar to what I'm doing for items, but for player-placed meshes within an area, rather than an area to manage all items.


Pages: [1]