Mythruna
March 28, 2024, 07:32:05 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]
  Print  
Author Topic: Dodged a bullet...  (Read 10801 times)
pspeed
Administrator
Hero Member
*****
Posts: 5612



View Profile
« on: March 01, 2015, 02:12:33 AM »

Well, kind of... Mythruna dodged a small bullet because I misunderstood what Sony means by sale end dates.

What?

Well, last weekend, Dragon Age Inquisition was on sale for 40% off.  I went back and forth on it over last weekend trying to decide if I wanted to drop $35 (still 'real money') for a game when I still haven't even finished Fallout 3 yet.  I finally convinced myself to pull the trigger because it looks like the free games for PS-Plus in March are going to be kind of lame.  My son and I just finished Valiant Hearts (we cried at the end) and he seems to be getting kind of bored with Fallout 3... so I was looking at a dead month for games, basically.

The dates said the sale ended on the 24th.  Well, I went to buy it on the 24th but the sale was already over.  And if I hummed and hawed over $35 you can bet I was not about to pay $60.

What does that have to do with Mythruna?

Well, I took Thursday and Friday off this week (mostly) because I'd preworked so many extra hours earlier in the week.  If a brand spanking new download of DA was sitting on the PS4... I'm pretty sure I would not have been working much on Mythruna. Smiley  Bullet dodged, I was able to put some significant time in.

Of course, this is still a frustrating part of development.  Every inch I gain requires several feet of work on other things.

Case in point: Thursday evening, I sit down, crack my knuckles, and think "Ok, let's get to this..." as I get back to the character creation screen.  So I start to hook things up again to the back end and I remembered the last issue I left off with: The only event notification I get for text field changes is per-character.  In other words, as you type "My dog has fleas." I get an event for "M" and then one for "My" then one for "My " and so on.  Not really a big deal until you want to do something expensive like send that text to the server.

This comes up because in "new Mythruna" players will have a first name and a last name.  These get rolled together into a general "Name" that is the one most often displayed.  It's the standard name that all objects have.  Well, Name = First Name + Last Name... and that specific combining is done on the server since there is no way to modify the name of a player character directly.

So each character typed "J' "o" "h" "n" caused an entity action to be run "setFirstName" which send a message over the network and that calls a script which sets the entity value... which causes a chain reaction to reset the Name... which then sends that changed Name back to the client.

In addition to being incredibly wasteful, it was poking me in a bad way because it's an area I hadn't properly dealt with that affects everything all the way down to my Lemur open source GUI library... because Lemur (at the time) couldn't tell you when you'd clicked out of a field.

So the bottom line was that I had to pick back up some old unfinished design documents for Lemur, figure out what the heck I was thinking back then, investigate where I left off, and figure out how much I had to implement to get what I needed.  So I did that... added focus change listening and so on... added a bunch more notes so I can finish things like key-based navigation, yadda yadda.

(Also, when thinking about how to implement some kind of visual indicator that some GUI component has the focus, I remembered that there was a long overdue refactoring on how GUI elements are composed... so I did that, too.  That was my Friday night.)

Back to the lemur GUI layer, I now only send first name and last name changes when the user leaves the field.  Hooked up those fields like they are supposed to... and tada... name gets updated like it's supposed to.

Next, I was toying with laying the ground work for displaying what the player looks like as they make their selections.  I wasn't sure I'd actually get to it as there is still a lot of work left but I wanted to look at it.  Some parts I will need anyway.

Some time back, I designed a general "mob type" system.  In scripts on the server, you can defined a bunch of mob types and what parameters have to be in effect to select that particular mob type.  So if you are human and female then it selects the "human-female" mob type.

For example:
registerMobType("human-male", [species("Human"), gender("male")])
registerMobType("human-female", [species("Human"), gender("female")])

There could be subtypes and so on... so it's not always a straight mapping.  For example, maybe someday there are 3 or 4 different base human females.

On the client, these mob types would then get mapped to a specific model configuration.  (That part is not yet implemented but it's partially designed.)  I thought at least I could be displaying the current mob type on the player creation screen and watch it change as I change male to female and so on.

So, I added the field and hooked up the back end scripts to recalculate the mob type when certain fields change.  No problem.

I fire it up... BOOM! 

So, some components (like MobType) convert their string values (like "human-female") into an integer ID based on strings stored in the database.  This is more compact to send a lot than a full string.  It's nicer for the database and it's nicer for the network.  In order to convert that ID back to a string, you need to hit the entity service.  The entity system Mythruna uses was open sourced as a project called Zay-ES and it has a client-server networking piece (also open sourced) called Zay-ES-Net.  Unfortunately, in Zay-ES-Net, the one thing I hadn't implemented yet was this remote string lookup.

That's another thing I did tonight.

Both of my open source projects got some nice updates and now I have a mostly working minimal character creation screen... that at least has the basic info for the next steps.

Sometimes a whole lot of work goes into making a relatively simple thing:


That screen will get a lot of reorganization as things develop.  It's a bit ugly and cobbled together at the moment.

I do need to at least get the model selection piece done even if I don't display it in the book.  Otherwise, even if you select "Male"... you'll still end up looking like a female.  What that all means is that there is at least another day or so of work before I can get to the "Play game" part of the client->server stuff.

...and there's a ton of work there, too, but that's at least fairly straight forward.  I can't wait.
Logged
Rayblon
Donators
Hero Member
***
Posts: 1861


Hmmm...


View Profile
« Reply #1 on: March 01, 2015, 09:37:22 AM »

When I first read  "Sony" in this post, I thought they threatened to sue you or something. xD

On topic, it's pretty awesome that you got a good amount of time to work on your baby. :3
Logged

Michael
Donators
Hero Member
***
Posts: 2166



View Profile
« Reply #2 on: March 01, 2015, 01:35:52 PM »

Loved your progress, you're writing, your excitement, and your anticipation. Great job, Paul, and I look forward to being a casual/extreme modder! Smiley Speaking of mods....
Logged
ebag51
Donators
Hero Member
***
Posts: 531


View Profile
« Reply #3 on: March 01, 2015, 03:21:14 PM »

Great to see steps are finally being taken to implement mobs. Great work Paul. Cheesy
Logged

pspeed
Administrator
Hero Member
*****
Posts: 5612



View Profile
« Reply #4 on: March 01, 2015, 03:51:48 PM »

Great to see steps are finally being taken to implement mobs. Great work Paul. Cheesy

Well, at least in the sense that player characters are treated as user-controlled mobs.  But yeah, a lot of it spills over, of course.
Logged
ebag51
Donators
Hero Member
***
Posts: 531


View Profile
« Reply #5 on: March 01, 2015, 04:03:38 PM »

I hope this snowball effect happens soon I want to play Mythruna alpha next year. Tongue
Logged

Pages: [1]
  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!