Mythruna
June 25, 2019, 05:56:57 PM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: Welcome to the new forums. See "Announcements" for a note for new users.
 
   Home   Help Search Login Register  
Pages: [1] 2 3 4
  Print  
Author Topic: Novement 2014 Status...  (Read 16874 times)
pspeed
Administrator
Hero Member
*****
Posts: 5565



View Profile
« on: November 27, 2014, 01:32:38 AM »

So, as many of you know, I planned to work on Mythruna this week as full time as possible.  I took the week off from work to hopefully work past some of the larger issues that required undivided attention.  This turned out to be significant in subtle ways.  I wasn't able to work on things as much as I'd hoped but not having the specter of work looming over me from minute to minute has definitely freed my mind to work past some issues.

Last week up through Saturday, I was putting the finishing touches on an Open Source Java library for reading OGEX files.  (My project: https://github.com/Simsilica/jogex, What the heck is OGEX? http://opengex.org/)  This is part 1 of a two part project to smooth the model import pipeline of jMonkeyEngine.  I have a lot of model assets I've purchased over the years and getting them into jME is always kind of a pin.  I hoped to smooth that process.  Anyway, it took me longer than I wanted but at least I was able to get that piece releasable before "Mythruna week".

On Sunday, I attempted to pick up where I left off like six months ago, re: networking.  There were at least four (long) text documents I had to read to figure out what the heck I was thinking about before and catch up.  This wasn't so much fun, really, but necessary.  And I'm glad I'd left such extensive notes because I'd forgotten a lot of stuff.  By Sunday evening, I was going through the code I'd written already and trying to relearn what I'd implemented and what was still left to be done.  Monday I started back in on the client side trying to figure out where to hook things in.

It cannot be overstated how useful it was to have nothing overly taxing pending.  Granted, familial obligations were still there and I had many cases where I ended up running an errand that broke flow.  Mostly, when working past these really rough spots, if I'm not 100% motivated then any distraction is a huge one.  "Ugh... I'm not sure what to do next with this connector stuff... wonder if anything is new on twitter?"  And so on.

The real significance of having enough time is that I didn't feel rushed to push something through.  When I only have a 1 hour block to work on something, I feel the pressure when I spin my wheels on design.  All of the existing new network code suffered from this greatly.  It was over-designed in the wrong direction.  When I went to start implementing the actual client-side login piece, I hit the same wall I'd hit six months ago.

Old Mythruna had it easy here.  I started by just hacking the client->server connection together and building stuff on top of it.  A rudimentary login and account creation was kind of slammed on top of that.  No password resets, no multiple characters, no nothing.  Client pops open a screen, you enter some stuff, and BAM! you're connected.

New Mythruna did not have this luxury. 

The first wrinkle is that the old password scheme was not as secure as it could be.  I need to convert everything over to SHA256 instead of MD5.  This means that I need to let users login with their old MD5 hashed password and force them to do a password reset.  Furthermore, the implication is that some day I might even want to do something better and so on some level this stuff should be plugin-enabled like the rest of the code.

The second wrinkle is that I want to be able to handle Mythruna.com logins.  The client has already started allowing logins to Mythruna.com, I just don't do anything with them.  The token passing protocol, etc. has been designed for how this will work but it's all brand new.  Twist the wrinkle a little more and imagine needing to handle cases where Mythruna.com is down but public servers still want to allow fallback logins or some servers who choose not to authenticate through Mythruna.com at all for some reason.

The bottom line is that this is not straight forward.  I had a design and some code that I felt like were elegant when I only got to work on them 1-2 hours at a time.  Plugin services that could handle different protocols (legacy MD5 versus new-hotness SHA256) with interception stuff for Mythruna.com logins.  It had lots of nice accounty classes and felt plugin-ready and so on.  The issue was the ridiculous amount of left-hand/right-hand distant coupling (the left hand can't be sure what the right hand will really do) between the plugin services on the back-end and the UI forms on the client.

If I had a stack of protocol support plugins on the server, I needed a similar stack of protocol forms on the client.  These are dynamically loaded about as far from each other as you can get.  It was even the impetus for me designing the plugin module deployment system because it made me really uncomfortable how tightly these things had to be coupled while still allowing for dynamic additions.  The server sends a list of plugins required and you'd better hope that the client has them, too, or you just won't get any farther.

Late Monday or early Tuesday, I had an epiphany that his since led me to gut all of the account services stuff I'd made before.  In it's place, I now have a more general request->response system.  Back-end code can send a request for values and the client can choose how it wants to present those to the user... without even really having to understand what they mean.  UI gets generated dynamically.  This can also be used by regular game code that needs to request something from the user.  (That was all kind of hackish before.)

I spent most of Tuesday implementing this and reworking my command line test client to use it.  Another round of refactoring earlier today and I was starting to get back to the UI side.  It's been going much better.

You can see from the screen shot below that I actually have a real network connection being setup and the server sends over the initial login form.  The buttons don't do anything (yet) but the path ahead is way more straight-forward than it has been to date.  Things are starting to come together.


I'm not going to lie.  I wanted to be past this part by now and implementing networked physics... but really, once the connection has been established all of those other things have very straight-forward approaches to implement them.  I'm hopeful that there are no more "requires 3x8 solid hours of thinking" road blocks in the immediate future.

Next will be to finish up login and account creation which is just a matter of finishing hooking up the dynamic UI support.  After that, I need to bring over and hook up the rest of the remote world stuff.  The entity system is already networked and ready to go but I need to rebootstrap the remote world change events and the remove blueprint database and so on.  Hopefully I can get all of that working before my stay-cation is done.

...then physics networking.
Logged
Michael Musgrove
Donators
Hero Member
***
Posts: 2158



View Profile WWW
« Reply #1 on: November 27, 2014, 08:24:44 AM »

Networking from what I see can be a very devious thing (and I've even looked at some example packet sending/listeners, and I didn't really enjoy it). Well, Paul, I'd like to thank you for this update, and I hope everything's going well for you and your family and friends, and I hope you'll get past this obstacle of physics networking.

Just the name of it, "Physics Networking", sounds so devious... so menacing..
Logged

Rayblon
Donators
Hero Member
***
Posts: 1839


One day I'll be a species in Mythruna...


View Profile
« Reply #2 on: November 27, 2014, 10:08:23 AM »

Just the name of it, "Physics Networking", sounds so devious... so menacing..

Physics is bad enough without adding another layer of boring to it.
Logged


^Useful links^
ebag51
Donators
Hero Member
***
Posts: 531


View Profile
« Reply #3 on: November 27, 2014, 05:16:13 PM »

It is nice to see progress good job Paul. Hope everything goes well for you and that the game rate of progress increases marginally. (Although more than marginally is good too Wink)
Logged

pspeed
Administrator
Hero Member
*****
Posts: 5565



View Profile
« Reply #4 on: November 27, 2014, 07:46:03 PM »

It is nice to see progress good job Paul. Hope everything goes well for you and that the game rate of progress increases marginally. (Although more than marginally is good too Wink)

Yeah, 'cause anything would be 'marginal' at this point. Wink  So hopefully reportable progress.
Logged
Moonkey
Hero Member
*****
Posts: 1587

This is probably a picture.


View Profile
« Reply #5 on: November 28, 2014, 07:39:27 AM »

There's nothing better than going over code you worked on over half a year ago. I hope you're happy with the progress you've got going so far! Smiley
Logged

Mythruna: Don't you dare read any posts I made before 2014.
pspeed
Administrator
Hero Member
*****
Posts: 5565



View Profile
« Reply #6 on: November 28, 2014, 11:46:07 AM »

Yeah, last night I was actually able to login and create accounts and stuff.  It's not particularly pretty yet but it's functional and that's all I need to do the next hard parts.

I will have to tweak at least one or two things in the near term so that I don't have to type my info in all the time just to test... but I have a connection and access to the entity system.  Now I just need a character selector and small character creator and to hook up the world, blueprint databases, chat messages, etc.
Logged
pspeed
Administrator
Hero Member
*****
Posts: 5565



View Profile
« Reply #7 on: November 29, 2014, 03:30:56 AM »

A bonus for those who read this....

I was about to start playing with a very basic character creation screen but I got side tracked.  I wanted to fix my male model so that at least you could pick male or female.  I had a version of him some time back where I finally removed his "member" so that I could paint clothes on him without it still looking obscene.  Before that I decided to load up the female and play with painting techniques.

Behold, clothing: (I had to load her in my pose tester just so we could see the front since we can only see the back in game)


I'll paint some clothes on the male model in the morning... I need to see if his skeleton even works in the pose tester first.  That's potentially a lot more work than just some painting.
Logged
pspeed
Administrator
Hero Member
*****
Posts: 5565



View Profile
« Reply #8 on: November 29, 2014, 03:33:28 AM »

For fun, this is what she looks like in Blender: (with texture at full resolution)


I paint with a hires texture and then lower it back again for actual use in the game.  a) it saves some memory and b) it hides a lot of small issues.
Logged
BigredRm
Donators
Sr. Member
***
Posts: 378


<-o Word up goes to that modern man o->


View Profile
« Reply #9 on: November 29, 2014, 09:13:29 AM »

Im lovin it. Paying attention while not getting hopes up is tough. Back to Skyrim in VR but I got my eye on Mythruna. Hail the Creator!
Logged

Visit Iron Island @ 1708,702
Michael Musgrove
Donators
Hero Member
***
Posts: 2158



View Profile WWW
« Reply #10 on: November 29, 2014, 12:45:22 PM »

I've been trying to play with Blender lately too. I haven't played too much, but a can do a little bit of things with it. I haven't tried character creation yet, though.
Logged

ebag51
Donators
Hero Member
***
Posts: 531


View Profile
« Reply #11 on: November 29, 2014, 02:34:27 PM »

Great job again Paul can't wait to see it implemented in the game.  Smiley
Logged

pspeed
Administrator
Hero Member
*****
Posts: 5565



View Profile
« Reply #12 on: December 04, 2014, 07:13:04 PM »

Just random... even though I didn't post an active to-do list here it doesn't mean that I don't keep them myself.  I usually have a bunch of them but here is a shot of the one I started working from this past weekend:



Good progress late Saturday and most of Sunday... I'm finally checking things off faster than I'm adding them to the "Other things" section. Smiley
Logged
Michael Musgrove
Donators
Hero Member
***
Posts: 2158



View Profile WWW
« Reply #13 on: December 05, 2014, 05:22:22 PM »

Looks great if you ask me. More things are "DONE" in the list than what's just sitting there.
Logged

pspeed
Administrator
Hero Member
*****
Posts: 5565



View Profile
« Reply #14 on: December 05, 2014, 07:01:20 PM »

Looks great if you ask me. More things are "DONE" in the list than what's just sitting there.

It was a list that was started on Saturday just for some super-short term stuff  while I got the network connection working.  I'm almost ready to actually start on the "real" parts, ie: streaming the terrain data over, blueprints, and stuff.  Fortunately, the entity system is already handled because I open sourced that bit a long time ago.
Logged
Pages: [1] 2 3 4
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!