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 - Maldris

Pages: [1]
1
I've been working on the new ability system for my project and after allot of planning and much more blundering and testing and fixing we have a basic system that more or less works.

I have a question that has arisen as a result of discussions on how to implement somewhat edge case abilities in this system.

The one that I'm unsure how to implement involves selectively aware physics. As an example, say the creation of a wall of force. This wall allows players to pass through it, but not NPC's or vis versa.

Preventing players passing through a region is simple enough with our existing implementation, just turn on physics for the prop when its created from its replicated root. However, making this representation on the server for the npc's movement is more difficult, and the subject of my confusion.

Would anyone have suggestions as to how to create a physics representation for an arbitrary piece of temporary geometry that will only effect the server side npc's and not the players, when this geometry is introduced by an ability at an arbitrary time and place.

Thanks for your help and kind regards,
Maldris

2
Ive been working on the new ability system for my project and after allot of planning and much more blundering and testing and fixing we have a basic system that more or less works.

The question I have is more to do with presentation of this system.

Often in games when laying down a targeted ability, its effective range is represented by a highlighted region of the terrain. I want to hear other peoples thoughts on ways to implement this behaviour as the approach that immediately comes to mind for me, has several flaws.

The approach I think of immediately is to use a model much as the clean engine system does when targeting, create the model with an animated UV that appears under the targets feet. The problem with this approach is that even when correcting for a sloped surface, it does not allow for anything other than a flat terrain. If the ground slopes up within the region, the model appears below the surface, if it slopes down it appears to partially hang in mid air.

Alternative solutions I have thought of tend to revolve around using particle effects and their collision events, a less than optimal solution for performance as well as appearance reasons.

I was wondering what other solutions people have come up with to solve this issue within their own titles and if they are willing to share their insight.

Thanks and regards,
Maldris

3
GUI Creation / new interface transparent to mouse events
« on: Jul 16, 14, 05:14:55 AM »
I recently created a new interface to service our new trading system, I implemented enough background code to do a functional test and built it.

However, upon doing do I am unable to interact with the ui in any way, nothing responds, and I have confirmed that I am generating mouse events for things behind the ui in the game world (I had a println statement running whenever mousing over another player, as this was part of how the ui was invoked, the println continued to output as I moused over the ui where the other player was behind)

I've had issues in the past where individual buttons did this, but not the whole ui. I've gone through and checked that the root ui level isn't ignoring mouse events, and neither are the other elements that need to be the subject. I'm at a loss as to what I have done wrong, could anyone pass on any advice?

4
Ive spent some time today debugging some new systems, and for the most part things have worked. however, of the 3 new spec oracles Ive created to support these, 1 never seems to receive a response when a spec is requested.

no errors are displayed in chat, console, or script errors. I have confirmed with println statements that the request does execute and is not being bypassed by logic. I have also checked spelling on all class and field definitions, and their spelling in the spec and oracles class methods.

I am somewhat confused by this due to the other two working perfectly, despite almost identical setup.

what are some common reasons that may result in a request being sent, and no events or errors being subsequently generated.

5
This may seem silly but can someone please explain more fully the behaviour of unique source and unique target settings in association definitions?

I ask this due to some unusual errors I have been experiencing in my quest logging system.

To explain, I have a questLog node that hangs off the character with an association called "characterToQuestLog"
it is a hard association with unique source and target.

From there hang quest nodes using another association "questLogToQuest"

Originally this was both unique source and unique target, however when testing came around I noted that zoning would loose all but the most recent quest, and realised that this was due to the association being unique and removing the old ones.

To correct this I remade the association as unique source (required for hard association) and not unique target. This resulted in no change to the behaviour. Assuming that this was due to multiple of the same associations using the same source node, I tried to set the Quest node as the source and the questlog as the target.

Ihis had a most unexpected result. on testing the characterToQuestLog association had been removed (note: there is no remove association call for this association in ANY script at all) and this caused script errors with the replication system and any code that tried to reference the character.
In addition, I still could not get multiple quests to associate with the questlog, only a single association would form.

So at this point I am somewhat confused as to what I have done wrong, and as to how to fix it, I suspect it is due to some component of the unique source and target that is somewhat counter-intuitive, could anyone enlighten me?

6
Scripting & Programming / moving Mouse not just visible Cursor
« on: Jan 12, 14, 05:32:41 AM »
ok, so I've been writing and tweaking my camera system and there is one issue that I've noticed.

using setIgnoreCursor(true) locks the cursor to the middle of the screen as I want, however mouse events, such as enter and click, still trigger at the location it was at when I ran that line.

I have tried using SetCursorPosition(x as integer, y as integer) before I start ignoring the cursor however this seems to have no effect, or at least behaves the same way and only moves the cursors visual representation.

is there a simple way to move the functional mouse location to the middle of the screen along with its visualisation so that these events still trigger correctly?
or do I have to repeatedly raycast every few frames instead? I would like to avoid this as its an unnecessary performance hit if there is a solution that can just use mouse events.

has anyone encountered this problem, and found a solution? or are able to offer advice at all?

7
ok, I have been working on a quest system of the last while, recently when I added a chat command to add quests to the quest log I initially had no problems (other than having to work out logical errors in the way the quests progressed)

Then one day I signed in and told the character node to set-up the questlog (I delete it after I'm done testing each time until the system is bug free) then told it to create a quest (the same testing quest Id been using). At this point, I got a disconnect error. Upon trying to reconnect to the server I found I was unable to (until some time later) and recieve an error message (image attached)

Today I added several printLn statements through the code from the start of the chat command, all the way through. I then deliberately reproduced the bug in the hope it would spit out the printLn statements and Id find where the error was. Unfortunately none of the printLn output messaged showed up in the console before I disconnected. I also recieved a different error when I tried to reconnect.

The interesting part about all this is that when I am able to sign in again, the quest system is set-up and the nodes exist as though it executed it all correctly, however it kicking the user whenever they receive a quest is not really a good feature :P

I've attached here the console error I receive when I disconnect as well as the two different errors I've received trying to login

17:32:10: Refreshing serverScriptOrganizer.
17:33:40: !ERROR!System:Connection to Server Lost: Connection Lost
17:33:40: !ERROR!System:GUIGhostInterface::Build(RFIF): GOM ERROR: GOM::addNodeFromPrototype (10554): error: with InternalException message 'Unable to create an instance from the prototype(1000000291), as it is not a valid prototype id.' node=1000000290
17:33:40: !ERROR!System:GUIGhostInterface::Build: Failed to create GUI control. name=GUIPanel
      
Has anyone else experienced this kind of issue? or can anyone advise me as to what may have happened?

8
This was a discussion we had the other day when looking at something some friends were making in a single player title, not actually related to our plans but I'm curious as to what people think.

In most online games, when you encounter a monster much larger than you (particularly something with multiple lets (Especially if you can walk under it)) and your only recourse for attacking it is to either; attack it with ranged weapons, or stab it in the ankles as you cant reach any higher.

so the discussion we had was how would you get around this to make a more engaging experience for the player?
shadow of the colossus did a great job in this regard, letting you climb the monster and so on, however this may not be particularly practical in an online game (due to issues of lag and timing)

we had the thought of compositing large creatures of several smaller 'logical creatures' that when killed would change the animations of the creature (say you sufficiently wound the foot, it starts to limp or falls over and you can attack its head)

what other methods would other people use? I'm curious to see how other people approach it.

9
Scripting & Programming / difficulty adding fields to ItemSpec
« on: Jul 28, 13, 07:31:51 AM »
ok this will be somewhat of a weird problem, and Im not sure if this should be wher eit is or under general scripting.

whats happened is that I created a field " rotl_invIconVisualisation" which is a class field consisting of a string and the system class field "defaultStatePresentation" (class uv). (and yes I copied all the classes between client and server, no spelling errors)

The purpose of this was to have a field that contained the texture FQN and the UV details for item icons within my inventory.

however when I added the field to both client and server versions of my spec class "E_ItemSpec" attempting to edit the spec throws an error (when I actually did the adding the other day this error did not occur and I was able to create and edit specs freely)
now when I removed the field from both I became able to edit the specs once more, although the first edit it showed the fields as still being part of the spec.

can anyone advise me as to how to add these fields to my spec in such a way as to not cause errors.

The error shown in the chat window was:

[hsl_error] CLIENT REMOTECALL FAILURE:
From Server Script: _SpecOracleUtilsClassMethods:_SendSpecToClientForEdit
Client/Account ID: 9223372055763132658 (0FAFFA68DA4780778BA40EFD9AB43764)
To Client Script: _SpecOracleUtilsClassMethods:_GotSpecForEdit
In function UnmarshalNode: XML Exception: SimuDomException: sp != mStart.npos at SimuDom.cpp(__LINE__)
07/28/2013 21:22:04
Call trace:
  Script MarshalUtils line 527 me[id=1000003657 class=_ItemSpecOracle]
  Script SpecOracleClassMethods line 220 me[1000003657]
  Script _SpecOracleUtilsClassMethods line 295 me[0]
starting method/function _GOTSPECFOREDIT
starting me[id=0 invalid]

the console and error panel outputs were almost identical, chat showed the most detail.

10
ok to sum up what I've done to this point, I've made an override to most of the _ItemSpec family and _ItemContainerSpec family so that my own instantiation classes are used etc.

what I'm wanting to achieve is be able to move around the order of items in the _containedItems lookupList on the overwritten item container (E_ItemContainer for simplicity) such as if I user were to drag an item from one slot to another in an inventory UI, thus the data back end would also change the order so that when the user opens the window again, their order change is persisted. (i.e. the 6th item in the list get moved such that is is the 3rd item in the list, or the 6th and 3rd items swap location)

My first thought when I was planning this (unfortunately away from a computer) was to use
insert <item> to <list> at <location>
to change the order, however when I took a look at the actual class I noticed that it was a lookup list and not a list (I'm assuming insert doesn't work with lookups as using a numeric key would add an additional entry, hence the HAS method)

the next simplest solution that came to mind was to rebuild the list with each operation but this is slow, really process intensive and could introduce issues with editing not being perfectly synchronous if I'm not careful.

As such I would like advice as to what other people would advise I do.

I apologise if what I've written is less than clear.

11
in an attempt to migrate my planned item structure to this new system I tried to add new base classes to the system. When I did this creating new specs with these classes would run indefinitely, afterwards a spec would appear on the list but I am unable to edit it.

In an attempt to get around this I removed their inheritance form _itemSpec and added them as decorators instead, on glomming them onto a spec I once again loose the ability to edit the spec.

This issue only happens with classes which have a parented class. any suggestions?

(as a note my new base classes inherited twice, once from _ItemSpec to the item_equibableSpec class then to the specific type, in this case weapon and armour, so even after removing the _item spec inheritance from item_equipable the base classes, weapon and armour, still had 1 inheritance to item_equipable)

12
I wanted to check that my plans here are on the right track for this, any advice would be appreciated.
Im currently wanting to build my projects Political system. This will involve a lookup list of each groups relationship to each other expressed as an integer and needs to be accessible everywhere (will affect things like spawn rates and types, dialogue, etc)

The current plan is to store this data by having an always up area with a persisted node with the necessary fields and methods glommed onto it.

this area can then be the target of remote calls to tell it when to update its data, and use server-server replication to distribute the data if necessary (only necessary to particular areas if at all)

would this be a practical approach to this kind of system or not?
any recommendations would be appreciated as this is the first of the global systems I'm working on at this point.

13
Scripting & Programming / [Resolved] intermittent ID reference
« on: Sep 13, 12, 06:49:22 AM »
ok This is the strangest problem I've had so far.

I'm currently working on some spawner logic for my game. As part of this logic I need to find a random point inside a region node (to which the spawner class is glommed). in the glommed class is a field of type ID which contains the ID of the region node it was glommed onto and this is used in the _PathSystemGetRandomPointInRegionNode method.

however when I do this it was throwing an error that the region node was invalid every second time it ran.
I put a $chat command in just before this to print out the region reference and I discovered something odd.

each time there was a problem the field had been set to 0. However the next time the line ran it would be a valid reference to the intended node.

I am very confused by this as there is no part of my code that sets this field apart from in the chat command which initially gloms the class. As an extension of this error the current population of the spawner is also resetting when it reaches maximum but I believe this to be caused either by a part of my logic that I've missed or by the same problem.

Does anyone know what may be causing this? I'm willing to admit its probably some stupid error on my part.

Here is the chat panel output for the whole series (there are allot of $chat commands that I added while trying to debug this and other problems)

[hsl_debug] 0,0: SCRIPT[E_WorldClassMethods]: Eval world override: HE_PostOnAreaRegister().
[general] Waking Spawners.
[general] spawner waking up
[general] spawner waking up
[hsl_debug] 0,0: SCRIPT[E_WorldClassMethods]: Eval world override: HE_PostOnAreaRegister().
 * Maldris has left the area.
[logon] * Maldris has exited the world.
 * Maldris has entered the area.
You have entered damtontest [area #9223372056361132662 instance#5].
[general] spawn timer ticked
[general] current pop low: 0
[general] current Region: 0
[hsl_error] 9223372056361132662,5: [damtontest] SCRIPT ERROR: _PathSystemGetRandomPointInRegionNode received an invalid regionNode
09/13/2012 11:36:41 UTC
Call trace:
  Script _PathSystemClassMethods line 182 me[id=9223372057499132664 class=_PathSystem]
  Script creature_spawnerClassMethods line 53 me[9223372057460132671]
starting method/function CREATURE_SPAWN_TIMER_TICK
starting me[id=9223372057460132671 class=creature_spawner]
[general] spawn timer ticked
[general] current pop low: 0
[general] current Region: 9223372057422132669
[general] got Point, Spawning
[general] making creature.
[general] Initialising creature.
[general] spawn timer ticked
[general] current pop low: 0
[general] current Region: 0
[hsl_error] 9223372056361132662,5: [damtontest] SCRIPT ERROR: _PathSystemGetRandomPointInRegionNode received an invalid regionNode
09/13/2012 11:36:56 UTC
Call trace:
  Script _PathSystemClassMethods line 182 me[id=9223372057499132664 class=_PathSystem]
  Script creature_spawnerClassMethods line 53 me[9223372057460132671]
starting method/function CREATURE_SPAWN_TIMER_TICK
starting me[id=9223372057460132671 class=creature_spawner]
[general] spawn timer ticked
[general] current pop low: 1
[general] current Region: 9223372057422132669
[general] got Point, Spawning
[general] making creature.
[general] Initialising creature.
[general] spawn timer ticked
[general] current pop low: 0
[general] current Region: 0
[hsl_error] 9223372056361132662,5: [damtontest] SCRIPT ERROR: _PathSystemGetRandomPointInRegionNode received an invalid regionNode
09/13/2012 11:37:11 UTC
Call trace:
  Script _PathSystemClassMethods line 182 me[id=9223372057499132664 class=_PathSystem]
  Script creature_spawnerClassMethods line 53 me[9223372057460132671]
starting method/function CREATURE_SPAWN_TIMER_TICK
starting me[id=9223372057460132671 class=creature_spawner]
[general] spawn timer ticked
[general] current pop low: 2
[general] current Region: 9223372057422132669
[general] got Point, Spawning
[general] making creature.
[general] Initialising creature.
[general] spawn timer ticked
[general] current pop low: 0
[general] current Region: 0
[hsl_error] 9223372056361132662,5: [damtontest] SCRIPT ERROR: _PathSystemGetRandomPointInRegionNode received an invalid regionNode
09/13/2012 11:37:26 UTC
Call trace:
  Script _PathSystemClassMethods line 182 me[id=9223372057499132664 class=_PathSystem]
  Script creature_spawnerClassMethods line 53 me[9223372057460132671]
starting method/function CREATURE_SPAWN_TIMER_TICK
starting me[id=9223372057460132671 class=creature_spawner]
[general] spawn timer ticked
[general] current pop low: 3
[general] current Region: 9223372057422132669
[general] got Point, Spawning
[general] making creature.
[general] Initialising creature.
 * Maldris has left the area.
[logon] * Maldris has exited the world.
 * Maldris has entered the area.
You have entered test [area #9223372055865132662 instance#0].
Shutting down area 9223372056361132662 instance 5.
[general] spawn timer ticked
[general] current pop low: 0
[general] current Region: 0
[hsl_error] 9223372056361132662,5: [damtontest] SCRIPT ERROR: _PathSystemGetRandomPointInRegionNode received an invalid regionNode
09/13/2012 11:37:41 UTC
Call trace:
  Script _PathSystemClassMethods line 182 me[id=9223372057499132664 class=_PathSystem]
  Script creature_spawnerClassMethods line 53 me[9223372057460132671]
starting method/function CREATURE_SPAWN_TIMER_TICK
starting me[id=9223372057460132671 class=creature_spawner]
[general] spawn timer ticked
[hsl_debug] 0,0: SCRIPT[E_WorldClassMethods]: Eval world override: HE_PostOnAreaRegister().



Suggestions anyone?

14
ok I once again apologise if I missed someone answering this question already but here goes.

I have a game specific implementation of npc's, this class inherits from _nonPlayerCharacter

I created a tool to edit some of the additional data that exists on these npcs, and for the most part it works, until I try to edit data that isn't part of _nonPlayerCharacter.

In my function that makes the alterations it takes the input arguments, uses $NPC._GetNpcByName to find the npc, this however returns a reference to a _nonPlayerCharacter.

looking through the methods available through the npc system node and through the npc'c class I don't see an applicable method to find my game specific class which the npc was instantiated form (defined in HE_NPCClassUsedForInstantiation as rotl_nonPlayerCharacter)

can anyone suggest how I would go about retrieving my game specific version of the same npc?

15
If this is the wrong place to put this feel free to berate me :P

My lead artist has asked me to investigate this and to be honest I wasnt sure where to start so Im hoping some of you would be able to offer me some advice.

If we have a character that employs the morphing system and want to visualise armour on them, we orriginally intended to use the part system to dynamicly swap out parts. However the previously mentioned requestor asked if it would be posible to use a type of geometry visualisation and morph it.

What way would you all recomend to create this kind of object and then to retrieve and pass the necessary morph information to the object.

I appologise if this seems overly simple but I am not 100% on much of the graphics orriented parts of the engine, nor do I know how to retrieve or use the morph system just yet.

Pages: [1]