Joshex, I dislike Java almost as much as I dislike Ecmascript (javascript to mortals). However, if the industry wants it, then as a professional, I have to learn it if I want to keep food on the table. Sticking to one language just gets you one thing, unemployed.
yeah, the other option is one a lot of people can't afford to do and I'd never suggest it; be a starving artist. It's what I do, fight the fads I don't like regardless the cost to me. cause eventually I'll develop something my way and it won't work with java and if I make it cool enough people will use it, and then... I will have no use for java applicants now will I? and if it starts a fad then... hehe.. mwahahahaha! lets see their wonderful java get out of that one. /em evil
Although the moment I realized that any bot you write has to either have preprogrammed pathing/motion or have to read the mapfiles and do geometry and collision calculations...
At least you didn't just bluescreen because you forgot your memory was near full and opened a youtube video on how to stretch a shrunken wool sweater. lost some graphical work.
this is why I wanted to write a timer system in python and blender. Much easier if you already have a 3D environment built for games doing these operations.
again, if you take the character Location that XMPP is sending as scripture then you don't need collision geometry. but for a race, you need a crosschecking system and that means something more complicated, either as you say "using movement prediction" or logging [keypresses, order pressed, and time pressed for], for the whole duration of the one second message wait, then send this data as one message when allowed and the server and other players update based on it. by the time they are done updating one second has passed and the next movement datapack is received. No lag, no rubber banding. it does require a "not received" message saying what movement number is missing and for the player to send that info back just in case the net has a hiccup and then there might be some lag and a necessary slowdown/speed up of processing movement data to resync.
How exactly do you think Codewalker got a generic XMPP server, that knows nothing about City of Heroes, to send messages between City of Heroes clients that make the game clients see each others' activity? XMPP is just XML wrappers around data. There's nothing you can't send.
I'm willing to work with this set-up, but so far I'm getting conflicting messages from everyone here on one key topic, which makes me take what codewalker said in reply as the correct answer, codewalker said even if you send other data (battle, timer, race, gates ETC.) to the client as an XML stanza it's not built to handle those so it will just ignore them, and codewalker doesn't have time to make it able to handle them.
I even confirmed it several times after in my own comments saying things like "Injecting just 'any' CoX server messages into an XML stanza designed in XMPP's messaging message composition format would not work according to Codewalker."
there needs to be a java plug-in on the client to handle that operation by parsing the message and looking for CoX message headers that Codewalker has not already included code for, then route the info to the COX client. right now it would either dump it in chat or just ignore it all together, that is what I gathered from what has been said.
if it's not movement/location data, animation/emote data, or a chat message, there is no support for it at present. from what I gather costumes are updated from player to player through the CoX client natively as I seem to remember that not being a server function.
We have motion, ability to see one another all costumed and animated, and ability to chat (and an ability to click doors and use single target zone transport). anything else is not currently supported and it may be a long time before it is. unless you want to write a plugin.
If I sent (mind you I don't know what City of heroes Gate collision (c) messages looked like so I'm just using words there):
<message type="groupchat" to="test1@server.nice.try/Nomad"
from="novapraetoria_meta@conference.server.nice.try/Conan the Librarian">
<u xmlns="xx:u" c="finishline.geo, 1:22:10, first place" m=""/>
</message>
Paragon chat would currently raise a flag where it wonders " 'c' ? what is 'c'? Error Globaltype 'c=' is not defined"
if I did:
<message type="groupchat" to="test1@server.nice.try/Nomad"
from="novapraetoria_meta@conference.server.nice.try/Conan the Librarian">
<u xmlns="xx:u" p=-4742.7 40 -240.8" v="0 -0.6 0" o="0 -1.77 0" m="finsihline.geo, 1:22:10, first place"/>
</message>
it would process it as a message block and would trigger Codewalker's function which looks for CoX game keywords that he has specified, this list would be read in an instant and no loops would be followed because their triggers don't match, the final trigger Else: would trigger and send:
Conan the Librarian: finishline.geo, 1:22:10, first place
to the game chat window. now while the player has received their result, the results window has not been called and any subsequent race finish text has not flashed on screen and the message including the finishline object was included. this seems stupid to worry over, it's just a topical thing right? wrong. what if you want to see the whole results window with scores from others?
Conan the Librarian: Superhero Wan, 1:22:10, first place, Supergal, 1:22:11, second place....... etc.
now again a topical thing, there's no window. but this message might be truncated by the message limit, or might be on multiple lines, and if the list is long you could end up missing chat messages from people as they are bumped off by the results.
best to keep data like this where it belongs, in it's own window, or chat tab, that's fine too and probably could be done. but why not call the window for nostalgia's sake? it's like the difference of between 1: me saying I'll show you the lost city of gold and showing you a real lost city of gold somewhere in peru and 2: me saying I'll show you the lost city of gold and showing you the sentence "the lost city of gold" on a piece of paper. yes it's still 'the lost city of gold' but not quite what you were expecting.
what if it's a long race with all the gates? gate collision messages in chat? next gate = messages in chat?. what about the timer? would kinda be annoying to receive your time in the chat window as a message once a second till you finish or till it hits a max time reset.
now Codewalker does not have time to program more loops into Paragon chat to look for these keywords not on the client not on the server (it's not a priority). and obviously he's not gonna release it just yet and obviously he will probably never release the server except to key people. so the only other option is a plugin made and sent to him or a standalone which communicates with the server and a plugin for the client with a module and loop looking for the message type you wish to send and referencing what to do in the CoX client with that message data instead of just plopping it in chat.
besides this if I made a stand alone timer and gate server, I would also need a plugin to collect player location from the XMPP server and send it to my program, and a plugin to receive the timer info and gate collision info to route back to the player, then a plugin on ParagonChat to know what to do with it. It also sounds like this system actually doesn't send anything from server to player unless it's global info for everyone which poses the consideration that the timer and gate system would have to be on the player side where they calculate it themselves and send the results to the server. gosh oh lordy that would be abused.. SuccessfulTroll autoset to all recordable places with times of 00:00:00 through 00:00:10. plus it would need a plugin for the server to save this data.
ok head spinning, message end.