6:24 PM 6/20/15:
NOTES; the targeting cursor (around a character or object when you click them) in City of heroes is comprised of 4 visual objects (corners) which are 'bumped' out of their standard location by motions of the character selected, to be clear they expand and contract with the bounding box(es) of the character's many parts.
now to think how to code that. I can always omit it for now. but later it will be necessary.
the physical setup would require some sort of soft or collision sensitive object to be linked to the corners. Moving the corners will have to be done with 2 constraints which tell the object to follow the movements of the soft/collision panels.
seems simple enough but will come with a lot more complexity as I get into it I'm sure..
hmm, I think I need to go observe the interactions in icon again just to be sure
one problem may be setting the softbody panels to 0 gravity. if i remember correctly there's a trick to it.
Reobserved it, character motions even effect it when it's diagonal like a diamond shape. so what I said should work.
9:42 pm :
Naturally curiosity got the better of me, I tried the above. it's a fail.
so over dinner I thought out a new method, it should have the desired effect and can be applied to numerous enemy instances.
simply put; the collision panels will be dynamic objects (parented to a static object type empty mesh, so they don't fall) set to follow a curve (line) the curve will have only 2 points, 1 point will follow the cube the other will follow another empty at the default position. I'll put static cubes around all the joints so when they hit the dynamic panels, the panels will be pushed back. After the push they will follow the line back to where they belong.
That /will/ work for that portion. However the fact that the corners will be controlled by the motion of 2 separate objects will be quite troublesome, typically it would cause a scale deform, I wish there were a way to tell the object to follow the Local X of one object and the Local Y of another, that would be great I'll look into that but chances are, no. I'll have to find another way.
Ah yes constraints, nearly forgot I can add constraints to...... wait a minute can constrains follow local motion? Well by gum they can! Ok I can solve that problem with the copy location constraint. providing this particular constraint works in the ge... Hey, it has Sho in IPO window and add Key. very nice, so if it doesn't work natively I can make an influence IPO Key. (NO j00, not that type of influence!!)
well even though it's all figured out, it will be a job and a bit to make that so... I'll save that for another time. for now I will have a lazy non animated non interactive character selection cursor that does little more than always angle towards the camera, re-parent itself to the current target and get the targets location, set itself to that location and toggle it's own visibility. then on selecting a target the first operation will toggle visibility off, reset the parent to the mouse, reset the location to the mouse location then begin finding the new target and so on and so forth.
again, I really appreciate the work the Cryptic and Paragon devs did to make CoX even more so every time I think of the complicated stuff they've had to program in much more complicated languages and without a nice pre-made gui with all sorts of tools ready to go.
so, finish this script then I can see what I'm targeting in real time so there's no guessing or checking the console window for print outs.
I so badly want to throw everything together and stop doing these temporarily optional side projects so I can play and get to putting missions together. but, we'll see.
5:16PM 6/21/15:
After some finesse I got a red plane to parent to and go to an enemy target and become visible, the red plane's "follow camera rotation" constraint isn't working so I'll have to find out what my options are after I get back from the store.
drat how hard can it be to do this lol. I'll have to do a
getOrientation() setOrientation()
script
go figure none of the stuff that is supposed to work for this operation works, so I'll have to do it manually using the code above.
I also finally put an object for the mouse pointer and noticed that in perspective rendering mode where the mouse pointer is; is not where it's pointing! the two only overlap in orthographic mode. but orthographic mode would be silly for a 3D game like this. the fix is to leave the invisible cursor sensor object and such necessary for interactions in the current layer in perspective rendering and make the visible portion in another visible layer rendered in orthographic.
so many things to do if I want to do it right. I thought I was gonna throw it all together this week and show it to my professor tomorrow,
8rolls eyes at self* well I'll just have to tell her the truth I hit some unexpected snags that slowed it down and was unable to get it ready for monday.
11:03 pm :
this is really starting to get to me, the code is running but not doing anything in the game..... Ah True level triggering and Level must be used, I was using 'Tap'
finally got it running! one more small step done.
10:09 am 6/22/15:
Note to other blender users, visibility actuators don't like to be run in the same state or closely after eachother, so doing so will cause the first one to run and the second one to ignore the request. It's better to do it manually in code KX_GameObject.setVisible(0=invisible 1=visible, 0= doesn't effect children 1=does effect children)
just shored that up cause the cursor needs a reset to invisible before being reparented or moved to another object. otherwise it could look a bit strange to see it racing to the next target or could block the view of the camera.
8:25 pm:
tired, long day. meh I'll try to get in the mood to work.
4:14 pm 6/23/15:
Todays lesson comes from the set-up for battle calcs;
So long as the information you are looking for is stored somewhere between you and the main parent object or on the main parent object it's easy to retrieve. any information stored outside this chain of parented objects has to either be obtained by the object's name from a collision sensor, or be entered into the parent chain.
for example: Parent -> Child1_1 -> Child1_2
to get the info from parent on Child1_2 all you have to do is '.getParent().getParent().whateverinfoyouwanted'.
for a second example:
Parent ->Child1_1 -> Child1_2
-> Child2_1
to get the info from Child2_1 onto Child1_2, first Child2_1 should pass either its name or the info somewhere in the parent/child1_# chain.
for stuff that's not even connected like:
Object1
Object2
it's best to use a collision sensor or some rules for one object to pass it's name into the parenting chain of the other object then set the other object to look for this name.
and that's the foundation of battle.
1:37 am :
actually got the hit calc in-place and programmed in, next I need to import the character and trigger the animation, then the damage calc. then I can do the other calcs for effects, DoT etc.
nearly there, nearly there.
4:15pm 6/24/15:
the more I do the less logic bricks I tend to use, I find it more controllable to just program it.
10:45 am 6/25/15: not an update really.
Sure. It says, "You can't read this! Ha ha, I win!"
Actually, it says yet another programmer thinks they can invent a block cipher. I have yet to meet the programmer capable of even equaling Enigma, but they keep trying.
The message also exhibits a lot of structure, but its probably too short to evaluate with conventional cryptanalysis. In other words, its not long enough to expose the weaknesses in its encryption algorithm (at a glance it seems to have barely 120 bits of message content), unless you get lucky and guess the algorithm directly.
Also, this is way off topic, even for me.
heh, there are many methods of encrypting, I watched the documentary that talked about the encryption methods they used to try and decrypt the second half of Enigma, fail lol. they didn't even try possibly millions of other complex methematical coding methods that no one seems to use.
pictoral encryption is a nice one, use the bits in your favorite image as a per character offset and optional use the rest of the image as fluff arranged in accordance with a bit stream of some sort in relation to the image or something more personal., IMPOSSIBLE to decrypt. it's probably similar to Enigma, it's well documented that the second half doesn't use 1 encryption method..
sine encryption is when you change the character offset per character based on the whole number increments on a large sine curve.
the whole problem needing to be addressed is; you will need a keypair of some sort to decrypt it, this keypair may only be sent to the client shortly but must remain in memory, unless you use a different one with each message, but that means sacrificing bandwidth and time. from what I remember codewalker saying, CoX used something similar to that system, every short while the encryption key is changed, so by the time your computer decrypts one message it's too late to use it for the next one which stops a lot of hacking problems.
meh, to give a hint, mine is non-standard, yes the key will change but only on certain actions like login, character creation, character deletion, name change, trade, consignments and store operations.
right now the key /is/ the message (heh, sly one there), so yes as arcana said you can't know what it says unless you know what it says. There is a second key used in the same message but it's nigh undecipherable, might as well be garblety-gook. trying to find the e's wont help. the message is used to decipher the key to the garbletygook and the key will not always be the same (in different messages). And that's why I felt confidant to put it out in the open like that, however I'm still working with it. I want to eventually get it to the point where the client makes a random cypher with a certain keyphrase and confirms with the server then sends a unique message declaring a new cypher unique to that particular client, which the server then stores in a hidden zone along with player data. then communications continue with the new cipher and no keyphrase at all, making it impossible for players to hack another player or mimic them to the server or even make heads or tails of messages intercepted unless they catch the original cipher relay and manage to decrypt it in-time to catch the next one. The only way to do that is to 'listen' to their line traffic, which in itself can be detected by multiple methods, I want to eventually raise a warning in those cases on the client side and one on the server side that tells the server to ignore and not reply and tells the client's user "someone may be attempting to intercept your messages, please restart your internet connection or contact your ISP if it persists". may even get the IP of the interceptor and forward that to the client so they can tell that to their ISP or set to block communications with it if they know how.
so many nice things I want to do, so much time it takes to plan them.
Game Work Progress Update:
Today, is thursday the 25th, I told myself yesterday was the last day to work on the battle system for a bit or at least till I can get a reasonable amount of graphics done before the 10th of july (when I have to show a picture that I feel captures the essence of what my research is about.)
yeah... so today graphical work, with any luck I can get a whole slew of it done and go back to coding in a couple days.
10:20 AM 6/26/15:
I have started on some new textures, I was unable to get my first brick texture so I'm making like 9 more, got a whole list of assets to make might take a week.
today I go out, really don't want to, but have to.
plus side at least I now remembered how I made the last brick texture and why it looked so good.
1:52 am 7/2/15:
finally got one set of brick textures done bricks-long-smooth 2x2 and 4x4 are finished from here i can do simple UV face stretching for multiplication purposes.
road textures next, then maybe concrete walls if I find time. and windows of course.
then any bits and bobbles such as streetlamps. gonna put together a few images for show.