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.

Messages - Tarra2012

Pages: 1 [2] 3 4 ... 8
I am irritated. "ServerSide" Logfile saving to client repository?

PhysicsCoreDump() is a serverside function.
On a Client a different logfile would be created (at least i suppose, as the clientside physics <> serverside physics).

Anyone ever seen a physic server logfile?

I will try your example as well, now that i know the "exact parameter assignments".
I have only seen already existing capsules so far.
Anyhow always a "true" is returned from physics calls. I disbelieve the actual state of the physics server.
And surprisingly noone ever tried to look into a physics logfiles (see other thread).

*Ok tested your implementation and:
i cant see new physics capsules beeing created (despite the obvious, returned TRUE from the function)

:) what do you PASS as content for the subject?

Can you add the lines that do the assignment of vars "subject and pos" to your example?
Its not working here. I dont see any new capsules ever be created.

Tried all kind of visualizations "checkboxes" in physics windows.
I do see already existing capsules as wireframes, but never a new one.

  //PID references PlayerID
  if not CreatePhysicsCapsuleCharacter(subject, PlayerID, 2.0, 2.0, 0.35, 0, pos, 1 )
    println("could not create a PhysicsCapsule for GUID:" + SYSTEM.REMOTE.CLIENT )

a) install p4merge (or other diff software correctly)
b) go to resolve button
     take "theirs - purple buttons" and press "save button"

now you should have the latest source at your IDE.

Scripting & Programming / Where to find physic server logfiles?
« on: Feb 01, 14, 01:05:31 PM »
Where can i find debugging info or logfiles for the physics server?

Code: [Select]
   safepath2 as String="\ScriptData\ZEO_PhysicsLog_"+SYSTEM.TIME.NOW

   if PhysicsCoreDump(safepath2) == true
     println("saved debug log")

This Code returns a true, but:
The RepositoryBrowser doesnt show a logfile at the desired location. (Serverside)
Anyone ideas where to find the logfile?

How does your capsule behave?
Is it a clientside controlled capsule (like a player?).
How can you further control your capsule (e.g. make move tests)?
Do you see the capsule in the Heroblade? (Physics wireframe boundry or such?)

Scripting & Programming / Re: Character Skills/Classes/Races
« on: Jan 19, 14, 08:37:58 AM »
My "callchain" is nowhere near complete. There are parts beeing called inbetween that i didnt list.
Its there to give you a vague understanding that "skills aka abilities" are infact much more difficult than a "clientside icon representation" suggests.

Most new coder underestimate the time they will need to follow the thoughts and architecture of the HE framework. HSL itself is clean and simple. The hierachy and dependencies of HE Framework is not.

Infact, my personal view is that 80%+ of new coder drop out because they lack the motivation or analytical skills to dwell deep and go "tiny steps". Its a strong indicator that tutorials and "small snippets of working code" are missing.

A final blow, that kills many is: Google will not help you!
The "HE Wiki" the "HE Forum" the "HJ Reference Worlds (inspect code)" will.

Scripting & Programming / Re: Character Skills/Classes/Races
« on: Jan 19, 14, 08:01:16 AM »
You need strong motivation and analytic skills to understand the clean engine "ability construct" used in HE.
Then when you really understood, you will likely know how to make the existing better.

First you should probably
- Learn Basic Wording/Classes/Hierachies/Systemparts

- Follow useful easy tutorials here in the forum
   before you really start to dwell into bigger changes.
  Manasystem (extending existing abilities)
  Cooldown 2d Clientside Display

Then dive into understanding Abilities. As most part in HeroEngine, they are quite complex, as they are distributed objects with different server and clientside representations.

-There are gui Elements
-There are clientside Nodes/Prototypes 
-There are serverside Nodes/Prototypes
-There are several dependecies/functions that call each other
    e.g. client calls server to request activation of Ability
           server calls client to trigger visual effect of Ability
           timers start/run/end to determine, when the user can fire the ability again next time ...

I would suggest you learn
1. to write a copy of a "ab** "abilityscript serverside.
2. understand the callchain (client calls the server to request the execution of an ability)
3. trigger your new abilityscript
4. learn how to debug e.g. with "/sn \sn" or other ways
5. Play around with GUI in general
6. Play around with GUI Events
7. Extend the hotbar with an icon that "onClick" triggers your new ability
8. Care for callbacks (clientside FX)

As i have seen similar questions more than 10times, i will give a small hint, in what "understanding" the distrubuted callchain means:

Code: [Select]
1 Part Clientside
Clientside: E_AbilityBar
method onMouseClick(args references Class GUIMouseEvent)
  target as NodeRef of Class GUIControl = args.source
  if args.leftButton
    when target.name
      is "Ability1"
        SendCommand("/ability use abstandardweaponfire")

2 Part Serverside
Server: cdmAbility
shared function HE_ProcessCommandInput( account as NodeRef, input as String )
  args as List of String
  Tokenize( input, args )
  if args.length < 2
    HE_CommandUsage( account, input )

  partialMatch ToLower( args[2] )
    to "use"
      CommandAbilityUse( account, args )

3 Part Serverside
shared function CommandAbilityUse( account as NodeRef of Class _PlayerAccount, args as List of String )
  var activateResult = ability.ActivateAbility( entity, target )

4 Part Serverside
method ActivateAbility( owner as NodeRef of Class E_CommonCharacter, target as NodeRef) as Class E_Result

5 Part Serverside
Server: abFireball (example, its dynamic due to callchain input params)

6 Part Clientside
 abFireball / depending on used InputParameters

7 Part
Clientside E_AbilityBarClassMethods
E_AbilityBarClassMethods:timeoutability(me.E_script:GetAbilityName(), cooldownsec, 0)

In my journey through physic i am using the "CreatePhysicsBoxCharacter()" _external Function, but it leads to some questions:

1. What is the parameter "physics_character_id_out references ID" representing ?
How can i get information about the Character_Object referenced?
I cant access any information. "\sn /sn" doesnt show any properties. Which seems normal, as its an ID that starts with "1". If you create more PhysicBoxCharacters() this ID is counted upwards.
Which function is meant to be used to get information about the physics_character_id?

2. Is there a tool that displays properties for PhysicsBoxCharacter?
The output shows, that the Object has been created, but i cant trace anything.
Do I need to search for a PhysicServer Logfile?

3. If MovePhysicsCharacter() is called and it returns "true", what does the vector
    in the callback method mean?

The Callback Methods looks like: _PHYSICSCHARACTERMOVECOMPLETE(a as ID,b as Vector3)
In the case below the returned vector is always (0,0,0).
Does it mean the move operation was calculated, but the move was denied?

4. Explanation of Parameters in CreatePhysicsBoxCharacter() 
I dont untersand parameters like "extents as Vector3, slopeLimit as Float, skinWidth as Float"
Is there any documentation available? Or a working code example?
If i search ALL client and ALL server scripts I still dont find a single code line that uses this _external function.

Code: [Select]

acct as NodeRef of Class E_playerAccount = SYSTEM.REMOTE.CLIENT
pc as NodeRef of Class E_playerCharacter = acct.GetMyChar()
phys_id as ID
pos as Vector3 = pc.GetPosition()

//We need a requester Node, simply take the selected "clicked" target
ctarget = MiscUtils:ClientToServerNode( acct.GetClickTarget() )
myid as ID = ctarget

//Specify class that handles callbacks from physic operation

//Extents - ? no idea what the input means
newvec as Vector3

//FYI: How the Method is described in _external
//CreatePhysicsBoxCharacter( requestingNode as NodeRef, physics_character_id_out references ID, extents as Vector3, slopeLimit as Float, skinWidth as Float, position as Vector3, gravity as Float ) as Boolean

if CreatePhysicsBoxCharacter( myid, phys_id, newvec, 2.0, 1.4, pos, 1.0 ) == true
   $CHAT.ChatPlayer( acct, "","Physic Created box: "+phys_id)

if MovePhysicsCharacter( ctarget, phys_id, pos ) == true
  $CHAT.ChatPlayer( acct, "","Physic Box moved: "+phys_id)

Output when Executed:
Physic Created box: 1
Physic Box moved: 1

[hsl_debug] 9223372056307022385,4: SCRIPT[EO_Physic_NodeClassMethods]: physchar created:9223372073882021740 a:1 b:true

[hsl_debug] 9223372056307022385,4: SCRIPT[EO_Physic_NodeClassMethods]: physchar moved:9223372073882021740 a:1 b:(0,0,0)

Code: [Select]
Class EO_Physic_Node

method _PHYSICSCHARACTERCREATED(a as ID, b as Boolean)
  println("physchar created:"+me+ " a:"+a+" b:"+b)   

  println("physchar moved:"+me+ " a:"+a+ " b:"+b)

// !Information
//  the me object in those objects is not kindof PhysicInstance
//  So you cant access properties or handle it alike

>>i decided to change the field type
A general stomach advise:

Whenever you need to change datatypes, better delete the old var and insert a new var.

a) You are forced to correct all scripts where the var is handled
b) Lists dependet on a changed datatypefield are tricky and need updates as well
c) Strange effects in HE can happen on changed datatype for a var (synchronizing effects)

>>code messed up whenever HE receives new updates
I guess you need to give more detailed error messages and your list of changed _/HE_ scripts.
Scan (prior to update) in HSL browser which of them have been changed by the coder.

I have seen only 2 updates, but none of them intereferred with our written parts. Besides some outdated Geometry/Speedtree console Statements.

its all possible as you wrote. there is no strict right or wrong.

yet if you trust clientside for interrupt checks, you are not very secure.
due to possible hacking issues, you could place the check serverside.
but i would only do this once your game is nearly finished :)

in terms of securing the application, think of the worst:
all clientdata can possibly be faked/changed. its not in your realm to know. thats why crucial checks
are done serverside. if this cast interrupt is not crucial, just leave it clientside.

Scripting & Programming / Re: client movement states
« on: Dec 14, 13, 04:44:47 AM »
better check, if a "cast" is in progress, otherwise you trigger the interrupt too often.

Pages: 1 [2] 3 4 ... 8