Dev Chat: 01/03/2015 - Dev Meeting / Q&A
Moderator: Community Managers
- John Adams
- Retired
- Posts: 4581
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
Dev Chat: 01/03/2015 - Dev Meeting / Q&A
Here's the log from today's Dev Chat/Meeting and Q&A with the Content Designers -- I have tried to highlight the important parts with color / indents.
Blackstorm:
[10:23] <Blackstorm> Hello here and have a happy new year :)
[10:24] <@Xinux> heya
[10:28] <~john> Black, let's talk here so I can use 1 chat log.
[10:31] <~john> [10:27] <@Blackstorm> on my side i am currently collecting some issues with items inventory ^^ on otherside i don't know if we can start to add features tagged as 0.3 ? or we continious to focus the current stage ?
[10:31] <~john> [10:27] <@Blackstorm> Looked and I are waiting from a Jimbo return about the riftway function too
[10:31] <~john> [10:28] <@Blackstorm> if that can be added in LUA form or if we need transform his function after his improvement (cost, level)
[10:32] <~john> To answer Blackstorm: If there is nothing you can do to help finish 0.2 tasks, then you could start on 0.3 stuff. There's LOTS of open work in 0.2 that needs progress. My goal for this year is to get teams to work together on tasks, so everything doesn't come to a halt when 1 developer disappears for a period of time.
[10:35] <Blackstorm> ok thanks ^^ in my case i saw only Volt and some times Lokked and Ratief here, no more (exept Xin and you^^)..
[10:37] <Blackstorm> one more thing :) as i know, you start the .listcommand function.. have you finished it please ? or maybe i can try to create it ?
[10:37] <~john> You can always post on Forums to see if anyone needs your help.
[10:38] <Blackstorm> not wrong ^^
[10:38] <~john> No, I have not finished that. You can work on that if you wish, that's pretty isolated and shouldn't affect other code. My goal was to make it dynamic, ie., not hardcoded prints.
[10:39] <Blackstorm> and that should refer to your current tokens too ^^
[10:39] <~john> do you know what I mean?
[10:39] <Blackstorm> yes i understand :)
[10:39] <~john> I guess they could use the tokens. Ie., if you do not have permissions, do not display the command ( ? )
[10:40] <~john> vs displaying all .commands that you cannot use :D
[10:42] <Blackstorm> i don't remember if we talk about the .commands function, i only remember the .listcommands -> you want to have a global .commands function too ?
[10:43] <~john> no, i meant dot commands (. commands)
[10:43] <~john> sorry
[10:43] <Blackstorm> ok ^^
[10:44] <Blackstorm> i will check that, this command will be usefull on NT, some guys ask me where they can find all current GM command.. but as i know, you can find this info nowhere
[10:46] <~john> the Commands table :)
[10:46] <~john> and the DB Editor (guest login) under Server->Commands
[10:46] <Blackstorm> yep only for dev :) not forf members ^^
[10:47] <Blackstorm> John, about the message : Failed to save your character... do you try to check your character_attribute table ?
[10:47] <~john> Members are not GMs :D
[10:47] <~john> yeah, my character has no attributes so I think that was the failure.
[10:47] <~john> The problem really was in the function and how it was coded. It shouldn't send a "false" fail just because nothing got saved. I have since fixed that.
[10:48] * Lokked (IceChat77@hidden-D14B6308.abhsia.telus.net) has joined #VGOEmu
[10:48] * ChanServ sets mode +o Lokked for #VGOEmu
[10:48] <Blackstorm> i had the same on my onw server, i done a default var setup and i have no more messages
[10:48] <@Lokked> Morning. Sorry that I'm late.
[10:49] <@Lokked> You guys got this all wrapped up?
[10:49] <Blackstorm> yes, the best way should be to initialize the character attibutes if none are definied :(
[10:49] <~john> Meeting adjourned.
[10:49] <Blackstorm> Hi Lokked ^^
[10:49] <~john> :D
[10:49] <@Lokked> :)
[10:50] <~john> I was hoping to get Volt today, but we might not see her. I have no idea where Ratief is.
[10:50] <Blackstorm> adjourned to this night ? or to another day please ?
[10:50] * Kandra (Kandra@hidden-EBEA4A06.cust.bredbandsbolaget.se) has joined #VGOEmu
[10:51] <@Xinux> John was kidding :)
[10:51] <~john> So Lokked, we'll just unofficially discuss whatever you see on the Agenda that matters to you, trying not to get too specific to 1 feature
[10:51] <~john> Hey Kandra
[10:51] <Kandra> Hi
[10:51] <~john> This is actually just a ploy to see if we can get 30 people on IRC at once :D
[10:52] <@Lokked> Hi Kandra.
[10:52] <@Lokked> We are stress-testing IRC
[10:52] <~john> Yes.
[10:52] <~john> Notice how I did not call this meeting in New Telon. Lokked has yet to stabilize the world :D
[10:52] <~john> (j/k)
[10:52] <@Lokked> Nobody is logged into NT, you guys might as well log in, see if we can crash it while we talking in IRC
[10:53] <Blackstorm> Hi Kandra ^^
[10:53] <~john> I'll log in, sure.
[10:54] <Kandra> I'm having this irc window open behind Visual Studio while I'm coding, so I'll only read what's being said from time to time.
[10:54] <Blackstorm> starting it too ^^
[10:54] <Blackstorm> John, do you try me restart/init script too please ? should be great for NT :)
[10:54] <Blackstorm> my
[10:54] <Blackstorm> ^^
[10:55] <~john> I have not, no.
[10:55] <~john> NT is Windows, so linux cron is not going to help me ;)
[10:55] <Blackstorm> should work on Ubuntu
[10:55] <~john> Plus, when NT crashes, I need it to stay crashed until we analyze why.
[10:55] <Blackstorm> you can if the log separatly no ?
Lokked:
Multiple Servers per Account
[10:55] <@Lokked> For the Agenda, and the topic on Projman: Multiple Servers - Have we decided exactly how we are going to do this? Or, may I go with my idea, which will be the same flavour as EQEmu.
[10:56] <Blackstorm> have
[10:56] <~john> Lokked, remind me of your idea. I think it's the same thing I was headed towards anyway.
[10:58] <@Lokked> EQEmu does not allow the EQ Client to select the server. The server selection is done in their custom Portal application, a similar application the VGClientLauncher.exe
[10:59] <@Lokked> Once the server is selected in the portal, the local login files are modified appropriately and the EQ client connects to the server that was selected in the Portal
[10:59] <Blackstorm> hum back to cahracter selection :(
[11:00] <@Lokked> This means we still have 1 Login Server, hosted by VGOEmu.
[11:00] * Zewt (Zewt@hidden-A403C9A.ftth.swbr.surewest.net) has joined #VGOEmu
[11:00] <@Lokked> I also dropped to Char select :p
[11:00] <Blackstorm> and back (like usabually) without any attribut/hotbar/abilities/stuff..
[11:00] <Blackstorm> (usually)
[11:01] <~john> Lokked, I have not seen EQEmu's "custom Portal". All I've ever seen is EQemu.exe and the server selector.
[11:01] <Zewt> Ok got IRC working
[11:01] <@Lokked> Sorry, that's what I'm referring to as a portal. I'll just call it server selector.
[11:01] <Blackstorm> lol ^^ Hello Zewt ^^
[11:01] <Zewt> have not used IRC for 20 years
[11:01] <~john> Ok, just to clarify it is not a custom app they wrote. It's actually EQEmu's client.
[11:01] <~john> heh heya Zewt :)
[11:02] <Zewt> Im so old
[11:02] <~john> Not as old as me, I bet ;)
[11:02] <@Lokked> Sorry, are you saying that's SOE's client? Or EQEmu wrote it?
[11:02] <Zewt> 55
[11:02] <@Xinux> soe's client
[11:02] <Zewt> so yeah older
[11:02] <~john> Lokked, sorry. SOE's client.
[11:02] <~john> Holy shit you're old!
[11:02] <~john> <-- 51 :)
[11:02] <Zewt> Started playing with punch cards
[11:02] <~john> Awsome.
[11:03] <Zewt> so not interested in a TS or mumble ?
[11:03] <~john> So Lokked. I might have a simpler solution which is right in line with your thoughts.
[11:03] <@Lokked> Hmm, ok. I don't remember that from my EQ days. I assumed they wrote that themselves. Well anyways, I think we can emulate the functionality of that and use it in Vanguard. The point is, that application choses the server before the client is launched.
[11:03] <~john> I got too much going on always to do Voice, sorry.
[11:03] <@Lokked> Please tell, John.
[11:06] <~john> Ok, brace yourself. Wall-of-Text inc
[11:07] <~john> When a player launches VGClientLauncher, and creates their first account, they log into LoginServer when they click Play. They create their first character and select an active server to play on (if more than 1 is active at the time, otherwise the new character defaults to the ONLY running server).
[11:08] <~john> What we change is, once that ACCOUNT is created and a CHARACTER is assigned to a WORLD, that's the only characters displayed for that ACCOUNT when you connect to LoginServer using that account again.
[11:09] <~john> This means, Login polls only that world that the account is bound to. If that world is down, the VGClientLauncher will not offer the PLAY button (because I control that)
[11:09] <@Lokked> Yes, exactly what I was thinking. Server select in VGClientLauncher, Login Server only sends them character information about that world.
[11:09] <~john> Well, the server select is NOT in VGClientLauncher. It is all derived.
[11:09] <~john> I do not want to manage local files if I do not have to.
[11:09] <~john> Login knows if that account has a character on world_x
[11:09] <~john> so Login dictates it.
[11:10] <~john> And, one more part.
[11:10] <@Lokked> Are you saying that each account can only be attached to 1 world? Or can 1 account be used for multiple worlds?
[11:11] <~john> When you create a 2nd character, at the Server Select portion of Char Create, you do not get to chose a World. It defaults to the one your ACCOUNT is now assigned to.
[11:11] <~john> one account, one world. yes.
[11:11] <~john> problem solved :)
[11:12] <~john> because there is no way to pass the World name/id from VGClientLauncher, to the VGClient, to the LoginServer.
[11:12] <~john> We need to teach LoginServer to only present 1 world, period.
[11:12] <~john> The only (easy) way to do this is to bind Account->World
[11:12] <@Lokked> We can pass the world name from VGClientLauncher to Login, though, can't we?
[11:13] <~john> No, VGClientLauncher does nothing but launch VGClient.exe --sessionid=blah
[11:13] <~john> it's VGClient.exe that communicates with LoginServer. Not the launcher.
[11:13] <@Lokked> Oooh! I thought it received the connection ID from Login. This is where I've been thinking there was a connection.
[11:13] <~john> The Launcher only authenticates to the ls_accounts table, and creates the sessionid needed in the command-line parameter.
[11:14] <@Lokked> Hold on, so the launcher queries the Database on your end?
[11:15] <~john> so recap: when you start VGClientLauncher and click Login, a JSON call is made to my web services, which takes that JSON and looks up the account info, starts a session in PHP, and passes back that sessionID, which we use to now authenticate the VGClient connecting to LoginServer is valid.
[11:15] <~john> Yes.
[11:15] <@Lokked> Would you entertain the launcher writing an UPDATE query?
[11:15] <~john> Queries via a RESTlet of sorts.
[11:15] <~john> No.
[11:15] <@Lokked> lol, ok
[11:16] <@Lokked> My extremely simple solution was this (we have to do almost NO coding changes):
[11:16] <~john> I mean, it sorta does now anyway... when the JSON is sent to launcher.vgoemulator.net, an UPDATE does occur, for like last_seen and stuff.
[11:16] <~john> The Floor recognizes Lokked:
[11:18] <@Lokked> VGClientLauncher queries for server list, presents to user. User picks and presses Play. Launcher UPDATES their ls_accounts record to indicate which server was chosen. When LOGIN accepts their connection and queries the DB for their character list, we just modify this query to return character results for the server that was entered in their ls_accounts table (or whatever table).
[11:18] <@Lokked> So the client only receives the characters for that server.
[11:18] * Dinenon (Dinenon@hidden-7A1E24DD.cpe.cableone.net) has joined #VGOEmu
[11:19] <~john> I'm not convinced putting a World Select on the Launcher is best. Worlds disappear constantly, and it will become a maintenance nightmare, imo.
[11:19] <~john> putting ALL the control/data coming from us means no brainers for players.
[11:20] * Headache (IceChat9@hidden-633D7EB8.res-cmts.sha.ptd.net) has joined #VGOEmu
[11:20] <@Xinux> The launcher should only display which ones are up and down tho wouldn't it?
[11:20] <~john> Hello joiners :)
[11:21] <@Lokked> Hello Din and Headache.
[11:21] <Headache> Hello. Did I miss the start/finish?
[11:21] <~john> The launcher could, I suppose. But I don't see a reason to. If my Account1 is bound to New Telon, and New Telon is down, the Play button is simply disabled.
[11:21] <@Xinux> or just show servers that are up like the client does in eqemu
[11:21] <~john> with a message stating that world is unavailable.
[11:22] <@Xinux> HI JOHN!!!
[11:22] <~john> Hi Kerri :)
[11:22] <~john> Lokked, I think I see what you're saying.
[11:23] <~john> But here's my problem with it; So Launcher displays a list of known servers that are up. How does that information get sent to Login so it knows what character list to send?
[11:24] <~john> remember, our ONLY valid parameter is sessionid
[11:24] <@Lokked> My thought was that it's stored in a database table.
[11:24] <@Lokked> selected_server or something like that.
[11:25] <@Lokked> The same time the session_id is generated/requested.
[11:26] <@Lokked> So that when the client is launched and the user is connected to LOGIN, LOGIN will query this column for the record pertaining to the connection client and only display characters from that server.
[11:26] <~john> the ls_sessions table could have a server_id field. I'm sorry that I'm just not seeing the difference between changing Login (which has to change anyway) or doing all this work to the Launcher.
[11:26] <~john> So by your solution, 1 account could have characters on multiple worlds.
[11:26] <@Lokked> The major difference that I can see if users will not need multiple accounts.
[11:26] <@Lokked> Right.
[11:27] <~john> hmm. That makes sense.
[11:27] <~john> it could be a pain in the ass to try and remember what account I have on what server for what characters.
[11:27] <@Lokked> And they can see the server status at the same time they are logging in to VGClientLauncher. We can include server descriptions, etc there as well.
[11:28] <@Lokked> And it will help market the servers.
[11:28] <@Xinux> Kerri is making me leave the house and put pants on so i'll be back in a little bit.
[11:28] <@Lokked> In that order>
[11:28] <@Xinux> yes ;)
[11:28] <@Xinux> ok afk for a few
[11:28] <~john> haha
[11:29] <~john> Lokked, I had started redesigning Launcher a while ago to be more like SOE's, where it has multiple accounts in a selector, and when the account is selected a list of Characters is displayed as well. That was my solution with "I forgot where I put my toon"
[11:30] <Moldew> Good morning ppl. Just here lurking...
[11:31] <~john> So, we change VGClientLauncher to first provide name/pwd for authentication. When the player clicks Login, the screen swaps out with a list of available servers. The player clicks the server they want, and clicks Play. At Play, another JSON is sent binding session_id to server_id.
[11:31] <~john> mornin Moldy :)
[11:32] <~john> Thus no reason to maintain local files or server lists or anything, just what we got now. Maybe a lastserver= value to auto select the last played server.
[11:32] <Moldew> Don't know if this is related to what you're talking about, but you don't HAVE to use EQemu to log in. If you are so inclined, you can have your own login server. Just change the eqhost.txt file accordingly.
[11:33] <Zewt> So, is there documented info. for content dev. I can read on forums/wiki? Or is that what we are going to talk about?
[11:33] <Moldew> Many servers do it that way to bypass EQemu.
[11:34] <~john> kinda Moldew. We're debating releasing our LoginServer publicly to solve the multi-server issue, any bypassing US is not the desired outcome ;)
[11:34] <~john> World Crash. KickDupeClient (shaking fist at Lokked)
[11:34] <~john> Why does this world only crash when Shargash is online? :)
[11:35] <@Lokked> I see Black was camping, or at least he's in the camping position
[11:35] <Moldew> Right, understood. I think they do taht cause EQemu had issues in the past, I don't really know though.
[11:35] <~john> Yeah, EQEmu, like EQ2Emu, had a "minilogin" option because releasing Login was all taboo and stuff, with the authentication crack and what not. We do not have those worries.
[11:36] <~john> @Zewt, there are a few forum posts about Content, and I thought I started a Wiki too.
[11:37] <Moldew> John, I don't know why, but I sorta want to learn LUA and help with dialogs. For future ref.
[11:38] <~john> LUA isn't hard at all. Once you see a few examples, it will all make sense. The hard part will be the developer who has to build all the functions you need for your scripting ;)
[11:39] <@Lokked> That's good, Moldew! All of the quests, dialogue, events, etc are scripted in LUA.
[11:39] <~john> Zewt, since I am designing our process similar to EQ2Emu's content tasks, this Wiki could give a general idea of how we'll do things: http://eq2emulator.net/wiki/index.php/Content
[11:40] <~john> Literally TONS of documentation no one has time to write, sadly.
[11:40] <~john> and of course, posts in this forum: viewforum.php?f=26
[11:41] <@Lokked> Are you posting the log?
[11:42] <~john> no, it was the same Mutex lock issue as before.
[11:42] <~john> where the lock was empty
[11:42] <@Lokked> ok
[11:42] * john mumbles something nasty about smart_ptr's
[11:42] <Blackstorm> ^^
[11:42] <~john> ok Lokked... do you have your question answered?
[11:43] <@Lokked> Regarding multiple servers?
[11:43] <~john> Yes.
[11:43] <Moldew> I thought you were getting rid of smart ptrs?
[11:43] <~john> so did I ;)
[11:43] <@Lokked> That's a long process, Moldew.
[11:43] <@Lokked> -_-
[11:43] <Moldew> Yeah...
[11:43] <~john> Hey, they were find/replaced in, hahah
[11:44] <@Lokked> They are for the most part. The Client object is working on my server as raw pointers :p
[11:44] <~john> okay so to quickly blast through the 2014 recap: Congratulations all, kick ass job. Woot. Next item... :D
[11:44] <@Lokked> I also have all WorldCharacter and Unreal Types reverted to Raws, and it compiles, and it runs! but shortly after it crashes.
[11:45] <Moldew> Sounds like progress! ;)
John Adams:
ProjMan, Tasks and the Future
[11:45] <~john> For Project Manager (ProjMan), does anyone here need me to explain why keeping this tool updated is so critical? or what it's purpose is?
[11:46] <Moldew> What is ProjMan?
[11:46] <Moldew> j/k
[11:47] <@Lokked> I have nothing more to say on my items in ProjMan. Stability is, of course, the most important, and the most elusive. Last night, I fixed movement so that Standing Rotation plays the rotation animation, and running up and down hills looks more fluid now. I can work on Combat Calculations now that Ratief has Attributes in place.
[11:47] <~john> Excellent, Lokked.
[11:47] <@Lokked> And NPC Movement. I will work on that and getting script functions so we can control it via script, as all of those subsystems are in place.
[11:48] <@Lokked> You asked if I'm happy with Spawn Lists in the 0.3 forum post, and I am. That can be closed out.
[11:48] <~john> So my presentation of ProjMan open tasks is simply, what can we close out before starting anything new (ie, combat calcs)
[11:49] <~john> I've mentioned it in a few places, I'd really like our devs to double-up on their feature implementations where possible, as people seem to vanish without warning and it cripples progress in certain areas (Unreal, netcode, etc)
[11:49] <~john> ok Lokked, cool.
[11:50] <~john> I think Black and Jimbo's open tasks will be finished when we merge their changes into trunk, which I want to do first thing when we start 0.3
[11:50] <~john> Read the 0.3 Planning post: viewtopic.php?f=4&t=1109 and give me feedback over the next few weeks.
[11:51] <~john> For the sake of this Chat Log, let me briefly run through the future ~gets out his crystal ball~
Blackstorm:
[10:23] <Blackstorm> Hello here and have a happy new year :)
[10:24] <@Xinux> heya
[10:28] <~john> Black, let's talk here so I can use 1 chat log.
[10:31] <~john> [10:27] <@Blackstorm> on my side i am currently collecting some issues with items inventory ^^ on otherside i don't know if we can start to add features tagged as 0.3 ? or we continious to focus the current stage ?
[10:31] <~john> [10:27] <@Blackstorm> Looked and I are waiting from a Jimbo return about the riftway function too
[10:31] <~john> [10:28] <@Blackstorm> if that can be added in LUA form or if we need transform his function after his improvement (cost, level)
[10:32] <~john> To answer Blackstorm: If there is nothing you can do to help finish 0.2 tasks, then you could start on 0.3 stuff. There's LOTS of open work in 0.2 that needs progress. My goal for this year is to get teams to work together on tasks, so everything doesn't come to a halt when 1 developer disappears for a period of time.
[10:35] <Blackstorm> ok thanks ^^ in my case i saw only Volt and some times Lokked and Ratief here, no more (exept Xin and you^^)..
[10:37] <Blackstorm> one more thing :) as i know, you start the .listcommand function.. have you finished it please ? or maybe i can try to create it ?
[10:37] <~john> You can always post on Forums to see if anyone needs your help.
[10:38] <Blackstorm> not wrong ^^
[10:38] <~john> No, I have not finished that. You can work on that if you wish, that's pretty isolated and shouldn't affect other code. My goal was to make it dynamic, ie., not hardcoded prints.
[10:39] <Blackstorm> and that should refer to your current tokens too ^^
[10:39] <~john> do you know what I mean?
[10:39] <Blackstorm> yes i understand :)
[10:39] <~john> I guess they could use the tokens. Ie., if you do not have permissions, do not display the command ( ? )
[10:40] <~john> vs displaying all .commands that you cannot use :D
[10:42] <Blackstorm> i don't remember if we talk about the .commands function, i only remember the .listcommands -> you want to have a global .commands function too ?
[10:43] <~john> no, i meant dot commands (. commands)
[10:43] <~john> sorry
[10:43] <Blackstorm> ok ^^
[10:44] <Blackstorm> i will check that, this command will be usefull on NT, some guys ask me where they can find all current GM command.. but as i know, you can find this info nowhere
[10:46] <~john> the Commands table :)
[10:46] <~john> and the DB Editor (guest login) under Server->Commands
[10:46] <Blackstorm> yep only for dev :) not forf members ^^
[10:47] <Blackstorm> John, about the message : Failed to save your character... do you try to check your character_attribute table ?
[10:47] <~john> Members are not GMs :D
[10:47] <~john> yeah, my character has no attributes so I think that was the failure.
[10:47] <~john> The problem really was in the function and how it was coded. It shouldn't send a "false" fail just because nothing got saved. I have since fixed that.
[10:48] * Lokked (IceChat77@hidden-D14B6308.abhsia.telus.net) has joined #VGOEmu
[10:48] * ChanServ sets mode +o Lokked for #VGOEmu
[10:48] <Blackstorm> i had the same on my onw server, i done a default var setup and i have no more messages
[10:48] <@Lokked> Morning. Sorry that I'm late.
[10:49] <@Lokked> You guys got this all wrapped up?
[10:49] <Blackstorm> yes, the best way should be to initialize the character attibutes if none are definied :(
[10:49] <~john> Meeting adjourned.
[10:49] <Blackstorm> Hi Lokked ^^
[10:49] <~john> :D
[10:49] <@Lokked> :)
[10:50] <~john> I was hoping to get Volt today, but we might not see her. I have no idea where Ratief is.
[10:50] <Blackstorm> adjourned to this night ? or to another day please ?
[10:50] * Kandra (Kandra@hidden-EBEA4A06.cust.bredbandsbolaget.se) has joined #VGOEmu
[10:51] <@Xinux> John was kidding :)
[10:51] <~john> So Lokked, we'll just unofficially discuss whatever you see on the Agenda that matters to you, trying not to get too specific to 1 feature
[10:51] <~john> Hey Kandra
[10:51] <Kandra> Hi
[10:51] <~john> This is actually just a ploy to see if we can get 30 people on IRC at once :D
[10:52] <@Lokked> Hi Kandra.
[10:52] <@Lokked> We are stress-testing IRC
[10:52] <~john> Yes.
[10:52] <~john> Notice how I did not call this meeting in New Telon. Lokked has yet to stabilize the world :D
[10:52] <~john> (j/k)
[10:52] <@Lokked> Nobody is logged into NT, you guys might as well log in, see if we can crash it while we talking in IRC
[10:53] <Blackstorm> Hi Kandra ^^
[10:53] <~john> I'll log in, sure.
[10:54] <Kandra> I'm having this irc window open behind Visual Studio while I'm coding, so I'll only read what's being said from time to time.
[10:54] <Blackstorm> starting it too ^^
[10:54] <Blackstorm> John, do you try me restart/init script too please ? should be great for NT :)
[10:54] <Blackstorm> my
[10:54] <Blackstorm> ^^
[10:55] <~john> I have not, no.
[10:55] <~john> NT is Windows, so linux cron is not going to help me ;)
[10:55] <Blackstorm> should work on Ubuntu
[10:55] <~john> Plus, when NT crashes, I need it to stay crashed until we analyze why.
[10:55] <Blackstorm> you can if the log separatly no ?
Lokked:
Multiple Servers per Account
[10:55] <@Lokked> For the Agenda, and the topic on Projman: Multiple Servers - Have we decided exactly how we are going to do this? Or, may I go with my idea, which will be the same flavour as EQEmu.
[10:56] <Blackstorm> have
[10:56] <~john> Lokked, remind me of your idea. I think it's the same thing I was headed towards anyway.
[10:58] <@Lokked> EQEmu does not allow the EQ Client to select the server. The server selection is done in their custom Portal application, a similar application the VGClientLauncher.exe
[10:59] <@Lokked> Once the server is selected in the portal, the local login files are modified appropriately and the EQ client connects to the server that was selected in the Portal
[10:59] <Blackstorm> hum back to cahracter selection :(
[11:00] <@Lokked> This means we still have 1 Login Server, hosted by VGOEmu.
[11:00] * Zewt (Zewt@hidden-A403C9A.ftth.swbr.surewest.net) has joined #VGOEmu
[11:00] <@Lokked> I also dropped to Char select :p
[11:00] <Blackstorm> and back (like usabually) without any attribut/hotbar/abilities/stuff..
[11:00] <Blackstorm> (usually)
[11:01] <~john> Lokked, I have not seen EQEmu's "custom Portal". All I've ever seen is EQemu.exe and the server selector.
[11:01] <Zewt> Ok got IRC working
[11:01] <@Lokked> Sorry, that's what I'm referring to as a portal. I'll just call it server selector.
[11:01] <Blackstorm> lol ^^ Hello Zewt ^^
[11:01] <Zewt> have not used IRC for 20 years
[11:01] <~john> Ok, just to clarify it is not a custom app they wrote. It's actually EQEmu's client.
[11:01] <~john> heh heya Zewt :)
[11:02] <Zewt> Im so old
[11:02] <~john> Not as old as me, I bet ;)
[11:02] <@Lokked> Sorry, are you saying that's SOE's client? Or EQEmu wrote it?
[11:02] <Zewt> 55
[11:02] <@Xinux> soe's client
[11:02] <Zewt> so yeah older
[11:02] <~john> Lokked, sorry. SOE's client.
[11:02] <~john> Holy shit you're old!
[11:02] <~john> <-- 51 :)
[11:02] <Zewt> Started playing with punch cards
[11:02] <~john> Awsome.
[11:03] <Zewt> so not interested in a TS or mumble ?
[11:03] <~john> So Lokked. I might have a simpler solution which is right in line with your thoughts.
[11:03] <@Lokked> Hmm, ok. I don't remember that from my EQ days. I assumed they wrote that themselves. Well anyways, I think we can emulate the functionality of that and use it in Vanguard. The point is, that application choses the server before the client is launched.
[11:03] <~john> I got too much going on always to do Voice, sorry.
[11:03] <@Lokked> Please tell, John.
[11:06] <~john> Ok, brace yourself. Wall-of-Text inc
[11:07] <~john> When a player launches VGClientLauncher, and creates their first account, they log into LoginServer when they click Play. They create their first character and select an active server to play on (if more than 1 is active at the time, otherwise the new character defaults to the ONLY running server).
[11:08] <~john> What we change is, once that ACCOUNT is created and a CHARACTER is assigned to a WORLD, that's the only characters displayed for that ACCOUNT when you connect to LoginServer using that account again.
[11:09] <~john> This means, Login polls only that world that the account is bound to. If that world is down, the VGClientLauncher will not offer the PLAY button (because I control that)
[11:09] <@Lokked> Yes, exactly what I was thinking. Server select in VGClientLauncher, Login Server only sends them character information about that world.
[11:09] <~john> Well, the server select is NOT in VGClientLauncher. It is all derived.
[11:09] <~john> I do not want to manage local files if I do not have to.
[11:09] <~john> Login knows if that account has a character on world_x
[11:09] <~john> so Login dictates it.
[11:10] <~john> And, one more part.
[11:10] <@Lokked> Are you saying that each account can only be attached to 1 world? Or can 1 account be used for multiple worlds?
[11:11] <~john> When you create a 2nd character, at the Server Select portion of Char Create, you do not get to chose a World. It defaults to the one your ACCOUNT is now assigned to.
[11:11] <~john> one account, one world. yes.
[11:11] <~john> problem solved :)
[11:12] <~john> because there is no way to pass the World name/id from VGClientLauncher, to the VGClient, to the LoginServer.
[11:12] <~john> We need to teach LoginServer to only present 1 world, period.
[11:12] <~john> The only (easy) way to do this is to bind Account->World
[11:12] <@Lokked> We can pass the world name from VGClientLauncher to Login, though, can't we?
[11:13] <~john> No, VGClientLauncher does nothing but launch VGClient.exe --sessionid=blah
[11:13] <~john> it's VGClient.exe that communicates with LoginServer. Not the launcher.
[11:13] <@Lokked> Oooh! I thought it received the connection ID from Login. This is where I've been thinking there was a connection.
[11:13] <~john> The Launcher only authenticates to the ls_accounts table, and creates the sessionid needed in the command-line parameter.
[11:14] <@Lokked> Hold on, so the launcher queries the Database on your end?
[11:15] <~john> so recap: when you start VGClientLauncher and click Login, a JSON call is made to my web services, which takes that JSON and looks up the account info, starts a session in PHP, and passes back that sessionID, which we use to now authenticate the VGClient connecting to LoginServer is valid.
[11:15] <~john> Yes.
[11:15] <@Lokked> Would you entertain the launcher writing an UPDATE query?
[11:15] <~john> Queries via a RESTlet of sorts.
[11:15] <~john> No.
[11:15] <@Lokked> lol, ok
[11:16] <@Lokked> My extremely simple solution was this (we have to do almost NO coding changes):
[11:16] <~john> I mean, it sorta does now anyway... when the JSON is sent to launcher.vgoemulator.net, an UPDATE does occur, for like last_seen and stuff.
[11:16] <~john> The Floor recognizes Lokked:
[11:18] <@Lokked> VGClientLauncher queries for server list, presents to user. User picks and presses Play. Launcher UPDATES their ls_accounts record to indicate which server was chosen. When LOGIN accepts their connection and queries the DB for their character list, we just modify this query to return character results for the server that was entered in their ls_accounts table (or whatever table).
[11:18] <@Lokked> So the client only receives the characters for that server.
[11:18] * Dinenon (Dinenon@hidden-7A1E24DD.cpe.cableone.net) has joined #VGOEmu
[11:19] <~john> I'm not convinced putting a World Select on the Launcher is best. Worlds disappear constantly, and it will become a maintenance nightmare, imo.
[11:19] <~john> putting ALL the control/data coming from us means no brainers for players.
[11:20] * Headache (IceChat9@hidden-633D7EB8.res-cmts.sha.ptd.net) has joined #VGOEmu
[11:20] <@Xinux> The launcher should only display which ones are up and down tho wouldn't it?
[11:20] <~john> Hello joiners :)
[11:21] <@Lokked> Hello Din and Headache.
[11:21] <Headache> Hello. Did I miss the start/finish?
[11:21] <~john> The launcher could, I suppose. But I don't see a reason to. If my Account1 is bound to New Telon, and New Telon is down, the Play button is simply disabled.
[11:21] <@Xinux> or just show servers that are up like the client does in eqemu
[11:21] <~john> with a message stating that world is unavailable.
[11:22] <@Xinux> HI JOHN!!!
[11:22] <~john> Hi Kerri :)
[11:22] <~john> Lokked, I think I see what you're saying.
[11:23] <~john> But here's my problem with it; So Launcher displays a list of known servers that are up. How does that information get sent to Login so it knows what character list to send?
[11:24] <~john> remember, our ONLY valid parameter is sessionid
[11:24] <@Lokked> My thought was that it's stored in a database table.
[11:24] <@Lokked> selected_server or something like that.
[11:25] <@Lokked> The same time the session_id is generated/requested.
[11:26] <@Lokked> So that when the client is launched and the user is connected to LOGIN, LOGIN will query this column for the record pertaining to the connection client and only display characters from that server.
[11:26] <~john> the ls_sessions table could have a server_id field. I'm sorry that I'm just not seeing the difference between changing Login (which has to change anyway) or doing all this work to the Launcher.
[11:26] <~john> So by your solution, 1 account could have characters on multiple worlds.
[11:26] <@Lokked> The major difference that I can see if users will not need multiple accounts.
[11:26] <@Lokked> Right.
[11:27] <~john> hmm. That makes sense.
[11:27] <~john> it could be a pain in the ass to try and remember what account I have on what server for what characters.
[11:27] <@Lokked> And they can see the server status at the same time they are logging in to VGClientLauncher. We can include server descriptions, etc there as well.
[11:28] <@Lokked> And it will help market the servers.
[11:28] <@Xinux> Kerri is making me leave the house and put pants on so i'll be back in a little bit.
[11:28] <@Lokked> In that order>
[11:28] <@Xinux> yes ;)
[11:28] <@Xinux> ok afk for a few
[11:28] <~john> haha
[11:29] <~john> Lokked, I had started redesigning Launcher a while ago to be more like SOE's, where it has multiple accounts in a selector, and when the account is selected a list of Characters is displayed as well. That was my solution with "I forgot where I put my toon"
[11:30] <Moldew> Good morning ppl. Just here lurking...
[11:31] <~john> So, we change VGClientLauncher to first provide name/pwd for authentication. When the player clicks Login, the screen swaps out with a list of available servers. The player clicks the server they want, and clicks Play. At Play, another JSON is sent binding session_id to server_id.
[11:31] <~john> mornin Moldy :)
[11:32] <~john> Thus no reason to maintain local files or server lists or anything, just what we got now. Maybe a lastserver= value to auto select the last played server.
[11:32] <Moldew> Don't know if this is related to what you're talking about, but you don't HAVE to use EQemu to log in. If you are so inclined, you can have your own login server. Just change the eqhost.txt file accordingly.
[11:33] <Zewt> So, is there documented info. for content dev. I can read on forums/wiki? Or is that what we are going to talk about?
[11:33] <Moldew> Many servers do it that way to bypass EQemu.
[11:34] <~john> kinda Moldew. We're debating releasing our LoginServer publicly to solve the multi-server issue, any bypassing US is not the desired outcome ;)
[11:34] <~john> World Crash. KickDupeClient (shaking fist at Lokked)
[11:34] <~john> Why does this world only crash when Shargash is online? :)
[11:35] <@Lokked> I see Black was camping, or at least he's in the camping position
[11:35] <Moldew> Right, understood. I think they do taht cause EQemu had issues in the past, I don't really know though.
[11:35] <~john> Yeah, EQEmu, like EQ2Emu, had a "minilogin" option because releasing Login was all taboo and stuff, with the authentication crack and what not. We do not have those worries.
[11:36] <~john> @Zewt, there are a few forum posts about Content, and I thought I started a Wiki too.
[11:37] <Moldew> John, I don't know why, but I sorta want to learn LUA and help with dialogs. For future ref.
[11:38] <~john> LUA isn't hard at all. Once you see a few examples, it will all make sense. The hard part will be the developer who has to build all the functions you need for your scripting ;)
[11:39] <@Lokked> That's good, Moldew! All of the quests, dialogue, events, etc are scripted in LUA.
[11:39] <~john> Zewt, since I am designing our process similar to EQ2Emu's content tasks, this Wiki could give a general idea of how we'll do things: http://eq2emulator.net/wiki/index.php/Content
[11:40] <~john> Literally TONS of documentation no one has time to write, sadly.
[11:40] <~john> and of course, posts in this forum: viewforum.php?f=26
[11:41] <@Lokked> Are you posting the log?
[11:42] <~john> no, it was the same Mutex lock issue as before.
[11:42] <~john> where the lock was empty
[11:42] <@Lokked> ok
[11:42] * john mumbles something nasty about smart_ptr's
[11:42] <Blackstorm> ^^
[11:42] <~john> ok Lokked... do you have your question answered?
[11:43] <@Lokked> Regarding multiple servers?
[11:43] <~john> Yes.
[11:43] <Moldew> I thought you were getting rid of smart ptrs?
[11:43] <~john> so did I ;)
[11:43] <@Lokked> That's a long process, Moldew.
[11:43] <@Lokked> -_-
[11:43] <Moldew> Yeah...
[11:43] <~john> Hey, they were find/replaced in, hahah
[11:44] <@Lokked> They are for the most part. The Client object is working on my server as raw pointers :p
[11:44] <~john> okay so to quickly blast through the 2014 recap: Congratulations all, kick ass job. Woot. Next item... :D
[11:44] <@Lokked> I also have all WorldCharacter and Unreal Types reverted to Raws, and it compiles, and it runs! but shortly after it crashes.
[11:45] <Moldew> Sounds like progress! ;)
John Adams:
ProjMan, Tasks and the Future
[11:45] <~john> For Project Manager (ProjMan), does anyone here need me to explain why keeping this tool updated is so critical? or what it's purpose is?
[11:46] <Moldew> What is ProjMan?
[11:46] <Moldew> j/k
[11:47] <@Lokked> I have nothing more to say on my items in ProjMan. Stability is, of course, the most important, and the most elusive. Last night, I fixed movement so that Standing Rotation plays the rotation animation, and running up and down hills looks more fluid now. I can work on Combat Calculations now that Ratief has Attributes in place.
[11:47] <~john> Excellent, Lokked.
[11:47] <@Lokked> And NPC Movement. I will work on that and getting script functions so we can control it via script, as all of those subsystems are in place.
[11:48] <@Lokked> You asked if I'm happy with Spawn Lists in the 0.3 forum post, and I am. That can be closed out.
[11:48] <~john> So my presentation of ProjMan open tasks is simply, what can we close out before starting anything new (ie, combat calcs)
[11:49] <~john> I've mentioned it in a few places, I'd really like our devs to double-up on their feature implementations where possible, as people seem to vanish without warning and it cripples progress in certain areas (Unreal, netcode, etc)
[11:49] <~john> ok Lokked, cool.
[11:50] <~john> I think Black and Jimbo's open tasks will be finished when we merge their changes into trunk, which I want to do first thing when we start 0.3
[11:50] <~john> Read the 0.3 Planning post: viewtopic.php?f=4&t=1109 and give me feedback over the next few weeks.
[11:51] <~john> For the sake of this Chat Log, let me briefly run through the future ~gets out his crystal ball~
- [11:53] <~john> As I've posted, I'm hoping to reach a 75% implementation by the time we finish the 0.5 cycle. By 75%, I do not mean every feature is at 100%, and we have 75% of the game done. I mean, anything that is implemented or a work-in-progress should be at least 75% done. Combat will take forever, literally. So many calculations and things to consider.
[11:54] <~john> But having a relatively stable system in place means we can tweak the values for 3 more versions, those being 0.6 - 0.8
[11:54] <~john> By 0.8, which I am calling "Beta", we should have a fairly playable game. All systems known to VG should be implemented, and *mostly* completed. We'll be tweaking until 1.0, so 100% is not expected.
[11:56] <~john> Lastly, the scheduling for this effort... that's a tough one, since we have so many C++ people, but the commits took a hit because of the holidays. I'm hoping to see SVN on fire in 2015, and with so many developers committing code, I'm planning on 3-month cycles through this year and next. If possible...
[11:56] <~john> any thoughts on any of this?[/list:u]
[11:57] <Moldew> Stupid question #1 - by "implementation" you mean systems in place, not content?
[11:57] <~john> Yes, server functionality like groups, guilds, diplomacy, crafting, etc.
[11:58] <~john> I'll talk about Content in a bit. I do wish more of our devs could be here.
[11:58] <@Lokked> Sounds good. Due to the holidays, I hadn't even looked at VGOEmu much, but things are settled down now.
[11:58] <~john> Yep, me too. I was totally neutered from Halloween until New Years. As you can tell by my post count, I'm back ;)
[11:59] <~john> Lokked, do you think it's reasonable to expect full cycle completions in 3 mos?
[12:00] <~john> I know it depends on the tasks assigned... but looking at how much work there is to do in C++, it will be pretty hectic to fit anything into a 3-mo window.
[12:00] <@Lokked> Depends on how much you cram into a cycle :p. But yes. Set your expectations as such.
[12:01] <~john> For example, the systems i mentioned above. Groups, Guilds, and all their functionality could take 2 developers the entire time to analyze and implement.
[12:01] <~john> But that's going by our current commit rate, which is pretty low.
[12:01] <@Lokked> You might as well set some sort of expectation, and I don't think 3 months is short enough to cause people to feel overwhelmed. It may not get met, but at least there's an expectation. With no expectations, you won't get anything.
[12:02] <~john> Agreed. I won't ever set a "hard deadline", as you can see, things slide from cycle to cycle. Giving someone a deadline means they quit usually :)
[12:03] <@Lokked> Groups and Guilds, with minimal functionality, I should think will be easily doable in 3 months. They are basically the same thing, with Guilds having more extra functions.
[12:03] <~john> so this is why I use things like "75%"
[12:03] <~john> Yeah, VG Guilds were not as complex as EQ2 guilds.
[12:04] <~john> Things like Harvesting, Diplomacy, Crafting and Housing... those are going to be pretty big, I think. Thought it's still just packets and calcs.
[12:04] <@Lokked> It's just a subscription to another Chat Channel, as an initial implementation, which persists, which means it needs database interaction.
[12:04] <~john> Combat, by far, will be our biggest system. I really want >>everyone<< involved in that, not just one super hero.
[12:05] <@Lokked> Blackstorm is working on Harvesting, and taking int consideration the scripted part of it.
[12:05] <@Lokked> Housing... Let's leave that till last :p
[12:05] <~john> heeh
[12:06] <~john> I have 3 greatest fears with this: 1) Losing devs, 2) Losing community, 3) hitting a wall like PPOs that cause the first 2 to happen. I know for a fact if we take too long, players will stop coming around. But I cannot control how much people are willing to help out.
[12:07] <~john> I'm happy with the # of bodies with red/blue/purple names. I just need more red names so the blue/purples have stuff to do.
[12:08] <Blackstorm> yes, i tried to work on harvesting just before the items functions, so i was blocked. Now i can do some new tests to pop the correct yeild, that part should be easy ^^
[12:08] <~john> so to close out ProjMan's bullet -- please update your statuses regularly (not daily, but at least monthly) during a cycle so know where we are and what work I can add/slide. This is critical.
[12:09] <@Lokked> PPOs, no matter how complicated sigil/soe made them, will never be insurmountable, and the gameplay will work without them. In the worst scenario, we start with pre-populated houses that we know the Parent_IDs for and gift/reward them.
[12:09] <~john> And, when you see something that is not on ProjMan that you know about but I missed, ADD IT please. I do not know everything about VG :)
[12:09] <~john> Lokked: good plan.
[12:09] <@Lokked> Ok, I have a question about ProjMan (embarrasingly enough, I've just been going about this my own way): What is the relationship between the Stage and the % Complete?
[12:10] <@Lokked> I use % complete as an overall % Complete. Is it supposed to be % Complete of the selected Stage?
[12:10] <~john> There's no real relationship. % complete is the overall place you are in the task, from Design to Completed.
[12:10] <@Lokked> Like 80% in Development stage means that it's 80% developed? Or would 80% mean the entire thing is 80% done?
[12:10] <@Lokked> Ok, thanks.
[12:11] <@Lokked> That's what I wanted to know.
[12:11] <Blackstorm> John, did you play with the .setmotd command ? if it good for you, i can change the status on the PM
[12:11] <~john> I generally only slide % when in Stage: Development
[12:12] <~john> Yes, Black, .setmotd works great. Did you get the token privs worked out?
[12:12] <~john> Lokked: So if you know from Design that the effort will take you 2 weeks to complete, at week 1 you could say it is 50% complete :D just a shallow example.
[12:12] <Blackstorm> it's work like the other command, i can remove the .notadotcommand function from the current code
[12:13] <~john> by "week 1" I do not mean calendar, I mean your estimated time to complete, if it's 2 weeks, 1 day a week will take 14 weeks lol... blah blah blah
[12:13] <@Lokked> I understand.
John Adams:
Bug Tracker
[12:15] <~john> So my next item is Bug Tracker. I have made this as effortless as possible to consume bugs reported by the testers, all I need now is all the Red names to help process them, and work the bugs to conclusion. Updating the status makes me happy, too. It's 2 clicks :)
[12:15] <~john> Bug Submission make the players feel they are helping out. If their bugs sit in New for months, they will stop wasting their time.
[12:16] <@Lokked> Ok, I haven't been dilligent about checking on the Bugs submitted. I will make a habit of doing this when I start a coding session.
[12:17] <~john> Lokked, one last thing on C++ land before I move on to Tools... I'm looking to you and Volt as the Principle Devs to more or less run the show, manage the others since you talk the talk. I can boss people around, but it's likely better coming from a peer.
[12:17] <@Lokked> Noted. Will become bossy.
[12:17] <~john> aka, I have a shitload of work to do and cannot babysit as much as I did in 2015. I need help, badly.
[12:17] <~john> haha
[12:18] <~john> Thank you.
[12:19] <~john> Okay, any more questions before I talk to the Content folks? Devs should still pay attention, because we need tons of Server code for the Content effort.
[12:19] * Faux (IceChat77@hidden-D7966D8A.dyn.optonline.net) has joined #VGOEmu
[12:19] <Zcoretri> 2015 is 2 1/2 days old...not much time to babysit :)
Moldew:
Community Growth
[12:19] <Moldew> I have a suggestion for your concern about not losing ppl.
[12:20] <Faux> Afternoon everyone
[12:20] <Moldew> First thing you see at vgoemulator.net is a post dated Aug 2013. (FIXED!)
[12:20] <~john> Sure Moldew, and hello Faux :)
[12:20] <@Lokked> Yes, Moldew? Hi Faux!
[12:20] <Moldew> Hi Faux.
[12:20] <Moldew> A little PR may help, and frequent updates would help imo.
[12:21] <@Lokked> Ah, I see what Moldew is talking about. The landing page.
[12:21] <Moldew> Yes.
[12:21] <~john> The Portal?
[12:21] <@Lokked> The Welcome message looks good, but just remove the post date, if possible?
[12:23] <@Lokked> I see a "Last visit was:" field in the top-left. Perhaps make that more prominent? What ideas do you have Moldew. I'm not a PR person :p
[12:23] <Moldew> As a new player, this is the first thing I'd see. What I would like to know is what's being worked on, what's been added, and how I can help. None of that is readily accessible, gotta dig a bit to find any of that.
[12:24] <Moldew> Portal is first stop, not the forums.
[12:24] <~john> Better? http://vgoemulator.net/index.php :)
[12:25] <Moldew> Yes, good first step! :)
[12:25] <~john> I could add the Current Feature List to the Portal, but that didn't seem like a "News" item.
[12:25] <Moldew> It needs to be dynamic though.
[12:27] <Moldew> Current features is definitely newsworthy to someone new coming to check it out.
[12:29] <Moldew> Take out some of the news on the portal page too. First post is about sunset, then there are only 4 additional posts.
[12:30] <Moldew> How about this - Have only the Welcome post with more info/links on how to get more info.
[12:30] <~john> The news isn't dynamic, since I constructed the portal myself. It doesn't read the PHPBB posts.
[12:31] <~john> okay, added some stuff to the Welcome box for now. We can certainly discuss that further later. I'd like to get to your Content/Tools questions if you're ready.
[12:31] <Moldew> I can go on and on, can take this offline. :)
[12:32] <~john> Cool, definitely post any PR/Webspace ideas and I'll get things changed.
[12:34] <~john> One last thing about web presence; my goal with the project was to drive players to VGOPlayers.com, and really flesh out that site to make it "the place to be". So I didn't focus a lot of effort on the Dev site, even though it is the one people come to first. So good ideas, thanks.
John Adams:
Content Design, Tools and In-Game Commands
[12:35] <Moldew> You bet. Ready for content! :)
[12:35] <~john> Okay, for the hot topic... Content, and Tools :D
[12:35] <~john> So as you know, aside from VGTesty, I'm basically the only one writing or maintaining tools. This effort is beyond comprehension how big it is unless you've done it (Zewt :))
[12:36] <~john> I'll have to ask Xinux where we are on Parsers when he returns, so I'll talk to Lokked now about the DB Patcher.
[12:36] <Zewt> I'm more a hardware guy, but I do get some code work in here and there
[12:37] <~john> As urgent as everything else is, this is something I really need to work out. Managing DB schema changes is about to be come a freakin nightmare, if we do not have a way to auto-patch worlds.
[12:37] <~john> @Zewt, i was just thinking about zewtastic.com and that effort hehe
[12:37] <Zewt> yes, it is massive
[12:37] <~john> You know, web design isn't just making things pretty.
[12:37] <Zewt> lots of functional php to do unique things
[12:38] <Zewt> I have it hibernating atm.
[12:38] <~john> Lokked, are you still here?
[12:39] <~john> I guess we can talk about DB Patcher offline, for details. I have designed it, just struggling with building it because World is still missing some important communications pieces.
[12:39] <@Lokked> I'm here
[12:40] <~john> DB Patcher is not only schema alterations, but delivering the content these guys will build. It's definitely a discussion bigger than this session.
[12:40] <@Lokked> I will have to duck out for a period, soon, but go on.
[12:40] <~john> Ok, just eavesdrop for now. Moving on to the Editor.
[12:40] <@Lokked> My hold up on Patcher is this: How do you determine what, incrementally, needs to be added to someone's database?
[12:40] <@Lokked> Beacuse you can't just update the whole thing every time, right?
[12:42] <~john> I think most of the Content team has seen the web-based DB Editor. This tool is web-based for a few reasons; 1) it runs on any browser, hardware, etc. No .net stupidity or wrestling with portability. 2) It's centrally located, and all edits are made on New Telon (or our Content server). This means 3) I can automate delivery of said content to connected worlds with minimal effort.
[12:43] <~john> Lokked: Yes. For Devs, it's fine to nuke your database each time. For custom servers (if ever) they want Schema changes, not Data changes except for Core Data, which always comes down (commands, opcodes, chunks)
[12:43] <~john> oops, -chunks.. because they might customize their chunks :)- [12:44] <~john> So back to DB Editor: Literally every change you make gets recorded in a Logs table, which builds the SQL queries that will be used to update New Telon or other worlds. This is why we use VGO's DB editor and not some local GUI.
[12:45] <~john> It is also based on EQ2Emu's DB Editor which took me 6 years to write ;) Converting it to VGO is taking some time, but shouldn't take a fraction of that time to make it useable with VGO data.
[12:46] <~john> My current hold up has been holidays, and struggling with the ever-changing DB schema. Lots of unknowns now have names, so that breaks the editor each time a DB column name changes. I know of no way to make this dynamic, and still look pretty, but I'm always trying new things. That's why many menus are hidden, because I have destroyed those features while experimenting :)
[12:47] <~john> Before I go into details, any questions about DB Editor and it's purpose?[/list:u]
[12:51] <~john> Okay, moving on.- [12:52] <~john> Content Development is multi-faceted; You will spawn entities in the world, you will design and build LUA scripts for NPC interaction and movement, and LUA scripts for Quest Steps. I would estimate 90% of the labor in Content Design is LUA scripting.
[12:53] <Moldew> YESSSS!!!
[12:53] <~john> I say this because the Entities (NPCs, Objects, etc) are collected in a specific location already - and aside from some cleanup, there is not a lot of effort to spawning NPCs. On occasion, you may need to create a spawn from scratch, but this hopefully will be minimal.
[12:54] <~john> So taking those individually:
[12:55] <~john> Spawning Entities is done via the DB Editor->Admin->Migrate Spawns tool. You basically pick the Chunk you are working in, the type of entity to spawn, and review the (MASSIVE) list of possibilities - using your sound judgment on which ones to place in the world.
[12:55] <~john> Have you seen the Migrate Spawns screen?
[12:56] <Moldew> Hmm...will look again.
[12:56] <~john> http://wiki.vgoemulator.net/Docs/DBEditor:MigrateSpawns
[12:57] <~john> That Wiki page demonstrates how to get spawns from the Raw Repository of Collected Data to the New Telon server.
[12:58] <~john> For example, you would pick Isle of Dawn, NPCs, Tan Fen Greatcloud, and when he shows up with 20 copies of himself, you pick one and click "Spawn This", and hide the rest (Hide These). Then in the world, you type .reload spawns (I think, Lokked???) and your newly added Tan Fen should appear at the x,y,z you chose.[/list:u]
[12:59] <@Lokked> .reload spawns and then .repop
[12:59] <Moldew> How is that different from .combine?
[12:59] <~john> In-game, there will be a virtual TON of . dot commands available to manipulate data. Moldew, Cyrcle and Kilsin have already tried these out.
[13:00] <~john> the .spawn combine command comes into play when you encounter an area over-populated with 1 type of NPC and you only really need 1, OR the area has multiple types that COULD spawn in the same placement.. ie., placeholders.
[13:00] <~john> Collected data, and thus Migrate Spawns tool, does not know when NPCs are placeholders; you have to build them. That's what .spawn combine is for.
[13:00] <~john> (so you don't have to build placeholders by hand in the database)
[13:01] <Moldew> OK, so for the same NPC in the same spot, use DB editor, NOT .spawn combine?
[13:01] <~john> the .spawn combine command should never be used to "clean up", just build placeholders really. Though it doesn't really matter.
[13:01] <Moldew> Got it.
[13:01] <~john> No you can use .spawn remove on duplicates.
[13:02] <Moldew> ah
[13:02] <~john> Although, remember that pile of Derogar's in Halgarad?
[13:02] <Moldew> So .spawn remove sorta = db editor spawn this one
[13:02] <Moldew> ?
[13:02] <Moldew> Yes, in Halgarad.
[13:02] <~john> I targeted one of them, and did a .spawn combine 5 (the radius to get them all) and .spawn combine save'd them and now there is only 1.
[13:03] <~john> Well, spawn remove is sorta = db editor, UNspawn this one :D
[13:03] <Moldew> Sounds like there are multiple ways then to deal with it - spawn combine, remove, or db editor. Is there a prefered method?
[13:03] <~john> It's harder to clean up dupes in the DB Editor, because you cannot visually see them. That's why we made in-game commands.
[13:03] <@Lokked> DBEditor is for adding spawns to the world. Think of .combine and .remove as cleaning up the World.
[13:04] <~john> Me personally, I'd use .spawn remove to kill dupes, .spawn combine to build placeholders, and DB Editor to replace something you accidentally deleted.
[13:04] <Moldew> OK, sounds logical. So those dupes horses in Halgarad - best to remove them. I think that's what I originally did.
[13:04] <~john> Another example between Remove and Combine; the wandering sentry's in Halgarad, you see that same guy 200 times along a path, right?
[13:05] <Moldew> yes
[13:05] <~john> You would not use .combine on those 200 sentry's. you would .remove 199 of them.
[13:05] <~john> leaving just the 1 you want at his "spawn point"
[13:05] <Moldew> right, cause lua does the path?
[13:05] <~john> Yes.
[13:06] <~john> LUA movement will merely be a series of "GoToLoc(x,y,z)" type commands that the NPC will execute.
[13:06] <Moldew> Easy.
[13:06] <Kandra> And you can spawn the removed pawns again when it's time to make the LUA scripts?
[13:07] <~john> No once a "placement" is removed, it's deleted from the database entirely. Not the NPC, just his x,y,z
[13:07] <@Lokked> Which we'll hopefully be able to work out with in-game commands. Stand here and run .path start, stand somewhere else and run .path next. Stand at final position and run .path finish. Something like that.
[13:07] <~john> Right, Lokked.
[13:08] <Kandra> So if someone removes them before the LUA scripts is done then there's no way to view their pathing?
[13:08] <Moldew> And all the logic of the path is something that you coding? Like to make sure it doesn't walk through walls, etc?
[13:08] <~john> It might also be possible to automate wander paths by reading the positions of a selected NPC in the raw data.
[13:09] <~john> Kandra, yes. But we have Raw Data to look at a list of all x,y,z for "Sentry Bob" for example.
[13:09] <Moldew> I like that idea - fun to see that in the maps.
[13:09] <~john> Moldew, it will be up to you to not make them walk through walls lol.
[13:09] <~john> meaning, they will follow the x,y,z coordinates of every waypoint on a path.
[13:09] <@Lokked> I have a plan for preventing them from walking through collidable objects.
[13:10] <Zewt> I collected data on a number of npc's that had large travek paths
[13:10] <Kandra> So no navmesh/navgrid implementation is on the roadmap?
[13:10] <@Lokked> But there's not point discussing it, in the event it doesn't work.
[13:10] <@Lokked> Kandra, exactly.
[13:10] <@Lokked> No sorry, opposite that.
[13:10] <~john> NPCs move in a straight line, from point to point. You can make them walk in a circle by placing many waypoints close enough togethet to simulate circular movement.
[13:10] <@Lokked> That is on the roadmap
[13:11] <~john> Which is a great segue into LUA. This is a biggie for you guys.
[13:11] <Kandra> It would be hard to implement mods that chase you with out navmesh. :-)
[13:12] <~john> I think the world has like 3 LUA commands currently coded. EQ2Emu has hundreds. We (VGO) have a lot of code to write to support your content. This is why "placements" will be the first thing (and only thing) you guys can do.
[13:13] <~john> Kandra, we rely on the terrain logic of Unreal to handle a chasing NPC staying on top of the soil and not warping through it.
[13:13] <~john> We have no heightmapping in EQ2, but NPCs follow the terrain in chase regardless. And they leash fine as well.
[13:14] <~john> Even now, if you go into New Telon and piss off an NPC, and run away, it should chase you.
[13:14] <~john> I think...
[13:14] <Kandra> That works when in the wild, but not inside buildings.
[13:14] <@Lokked> No.
[13:14] <@Lokked> There is no aggro in NT.
[13:14] <~john> Lokked, there is. .forcetaunt :)
[13:14] <~john> it's a Volt test command
[13:15] <~john> Kandra, that may be true. If you run around a corner in a building, I can see the mob face planting into the wall currently.
[13:18] <~john> Lokked, you're right, they do not chase automatically. I thought that was just a function of the scripts.
[13:18] <~john> I have my Emu's confused :)
[13:19] <Zewt> In the final weeks of VG, I captured numerous dungeon walkthu's while sneaking to capture the natural state of NPCs at rest.
[13:20] <~john> I know, you were like a combat journalist.
[13:21] <Zewt> I mean its all HD video
[13:21] <~john> So a few more points about the DB Editor's role in your effort. There will be menus for the major systems, like Spawns, Chunks, Abilities, Items etc. When you open these menus, you should see submenu options for editing data related to the objects.
[13:21] <Zewt> I captured a few TB of video.
[13:21] <~john> Jeepers. Hang onto that :D
[13:22] <~john> So for example, the Spawns editor will allow you to change parameters of a given NPC/Object from the DB Editor itself - although we're also implementing in-game commands for this as well. Call it redundancy.
[13:23] <~john> The DB Editor will come in handy for an overview of settings on a screen vs .spawn details which may not show everything. DB Editor Spawn Placements menu will also show each x,y,z that spawn is at so you can warp to it and remove it if you wish.
[13:23] <~john> Lastly, the Spawn->LUA editor
[13:24] <~john> You can edit your LUA scripts any way you wish, using any tool of choice (Notepad++, or Jabantiz' LUA Editor). The finished script though, must be pasted into DB Editor and saved so it can be added to the Content SVN.
[13:25] <~john> So to recap: Migrate Spawns -> Clean Up in-game -> Spawn Editor to tweak and add LUA Script -> Done, next NPC :)
[13:26] <~john> Part of Content is also things like Abilities, Items, Quests, and Chunk data. There's also static Server Data which may not affect you too much.
[13:27] <~john> Now for the main "excuse" why Content Design hasn't started yet -- the data is ever-changing as we discover more things about it. Makes it dangerous for me to set you all loose, then tell you in 3 mos we have to start over.
[13:28] <~john> However, I think we're nearing the end of the data mysteries, so I'm hopeful to start content in Jan. ~crosses fingers~ Now if I can just get the tools done :)
[13:28] <~john> any questions? thoughts? concerns? ideas?
[13:30] <Moldew> What's an example of "chunk" data?
Zewtastic:
NPC Details / Attributes - how to configure?
[13:30] <Zewt> does the lua cover the npc loot table, hitpoints, etc?
[13:31] <~john> Moldew, "chunk" data is the zone. Like Halgarad.
[13:31] <Moldew> And what would we change in DB Editor for Halgarad?
[13:32] <~john> Zewt, no Loot will be DB table data, and HP/Power will be derived based on the same types of calculations used for players. Where LUA offsets HP/STR and whatnot is in bonuses granted by gear/abilities. If that makes sense.
[13:32] <~john> Moldew, you probably won't need to make any changes to Chunk data at this point. But before, it was all the Safe Locations, the Unreal file data and so forth.
[13:33] <Moldew> I would assume the chunk is pretty static, and we edit all the contents of the chunk (npcs, items, etc) not the chunk itself
[13:33] <Zewt> not fully. but I guess thats ok. Was just curious how names andmini bosses are handled.
[13:33] <~john> Correct. But a Chunk does have parameters. Like, what you call it when you do a .rift {chunk_name} - the chunk_name is Chunk data.
[13:34] <Moldew> OK, that explains what would/could be changed in a chunk (safe points, etc) Thanks.
[13:34] <~john> Zewt, in most cases, NPC "data" is base-lined in the DB, and modified at runtime via calculations and LUA functions, yes.
[13:35] <~john> For example, a Boss mob may be level 50, with 500 STR. When it spawns, we "calculate" it has a baseline number of HP because it is level 50.
[13:35] <~john> LUA attached to that Boss might give it a 50% bonus to HP just beacuse it's a boss.
[13:35] <~john> Same with STR. We might jack up the STR via LUA just because it's a boss encounter.
[13:36] <~john> totally bogus examples, but that's kinda what I mean.
[13:36] <Zewt> So names and mini-bosses are basically all predefined, same as regular npcs. We are basically just populating the world with them, placing them and setting their pathing?
[13:36] <~john> I imagine we will calculate the toughness of any spawn based not only on it's level, but it's "dots".
[13:36] <~john> Yes.
[13:37] <Zewt> ok. glad I did all these video run-thru's.
[13:37] <~john> However they were collected, is how they are being populated. And none of that colleted data has things like stats or HP or resists, etc. that all has to be derived at spawn time.
[13:37] <~john> If you collected a level 50 6-dot, that is how it will appear in New Telon.
[13:37] <~john> is that what you're asking?
[13:38] <Zewt> I guess I am missing how HP/STR/DEX etc get defined for each npc.
[13:38] <Zewt> each specificially placed npc
[13:39] <Zewt> we know from collection their name, level, dots, but much of that other stuff we do not
[13:39] <~john> gotcha. yes we do not know that data from the raw collects. That is data that is never transmitted TO a client, so we could not collect it.
[13:39] <Zewt> Say for example ranged mob, melee mob, magic resist etc.
[13:39] <~john> that's all server-side values and calculations.
[13:40] <Zewt> but none of that is set by us placing npcs
[13:40] <~john> Right.
[13:40] <Zewt> when and where does that linking detail get set? Is that us also?
[13:40] <~john> That is yet to be determined, but I am predicting it will be calculations we "invent" based on existing resources about VG encounters.
[13:41] <~john> Like, how many HP did General Vicus have?
[13:41] <~john> like 20million? heh
[13:42] <Zewt> well log files of fights would have that kind of detail, generally
[13:42] <~john> that is obviously not a calculation we can base on simple "Level * value" to acquire, so yeah Bosses will have to be altered at spawn time using LUA.
[13:42] <Zewt> it would record how much dmg was done
[13:42] <~john> hopefully we have those. Once we get an idea of a few encounters stats, we can build calculations to determine those across the board.
[13:42] <Zewt> I always collected all data to my log files I submitted
[13:42] <~john> cool.
[13:43] <Zewt> Every collect I included the log files.
[13:43] <Zewt> so it should help I guess.
[13:43] <~john> and honestly, as much as we want a 100% exact copy of VG, it's likely we will be different in these respects. it's all guess work, and we have no real world to test stuff in.
[13:43] <Zewt> but will never be perfect
[13:43] <~john> haha, you are with me :)
[13:43] <Zewt> yes, I understand
[13:43] <~john> it just needs to be close enough to keep VG players happy.
[13:44] <Moldew> But that's not bad at all. Reinventing some of those things could be more interesting.
[13:44] <Zewt> haha, and meybe make them better
[13:44] <Moldew> Precisely.
[13:44] <Zewt> smarter
[13:44] <Zewt> more challenging
[13:44] <~john> Yup, less nerfed. :)
[13:45] <Zewt> So I vote we all get flying mounts. only us. Hahah
[13:45] <~john> haha
[13:45] <~john> GMs :)
[13:45] <Zewt> I miss flying around VG.
[13:45] <Zewt> Was such nice therapy
[13:45] <~john> Beautiful world, indeed.
John Adams:
Content Design / DB Editor Q&A (con't)
[13:46] <Moldew> Content will be tough w/o ability to fly :)
[13:46] <~john> BTW Lokked: I have been sitting in NT for some time, after autoattacking and stopping it, my commands are no longer working.
[13:46] <~john> Moldew, we'll invent "flymode" for characters.
[13:46] <Zewt> well the world was not designed for flying mounts originally
[13:46] <Moldew> Woot!
[13:47] <~john> we won't do mounts for some time, but you will certainly move up and down.
[13:47] <~john> Zewt, yes. Though it's interesting to fly 10,000 ft up a cliff face and see a lizard sitting up there :)
[13:48] <~john> Pretty sure NT will be going for old-school rules... but we'll see.
[13:49] <Zewt> is your plan to progress chunk by chunk? Is there are progression plan for that ?
[13:49] <Moldew> I remember seeing a video of VG beta where Brad talks about incorporating the z axis.
[13:49] <~john> My last point about Tools is of course, VGOPlayers and building that community. Just a note that I am usually working in a piece of it every week, little at a time. I'd like to restore the former glory of VGPlayers.com, even if we end up being the only server.
[13:49] <~john> Zewt, the plan is kinda linear. I want to start at Starting Locations, and spiral outward.
[13:50] <Zewt> All starting locations simultaneously?
[13:50] <~john> Yes, for as many Content Devs as we have, sure.
[13:51] <~john> Hopefully not everyone favors the same starting town :)
[13:51] <Kandra> Think we all wants to start with Mekalia. ;-)
[13:52] <~john> But see, that demonstrates even more reasons why Content has been delayed; I have populated most of the starting locations already. What's next, is the LUA/Interactions, Merchants, Trainers and Quests - all of which are currently being developed.
[13:52] <~john> haha if anyone remember Mekalia, you can all start there fo sho
[13:52] <Zewt> I thought gnomes were being deleted?
[13:52] <~john> GM-only race.
[13:52] <Zewt> I can't be involved with any gnome activity
[13:53] <~john> Gnomes are tasty.
[13:54] <~john> okay, anything more on Content aside from why the hell can't we start it yet?
[13:54] <~john> oh, Doors. Volt was working on those, but has taken a leave for RL. Hopefully we can finish them so you can get inside places you need to :)
[13:55] <Moldew> And not in the places you shouldn't be.. :)
[13:55] <~john> Yes, do not step through THAT door in New Targ ;)
[13:55] <Moldew> :)
[13:56] <Moldew> On that note - how to put in nonopenable doors?
[13:56] <Moldew> DB Editor?
[13:57] <~john> Yeah, they are just objects (PPOs) likely.
[13:57] <Moldew> Also, combine collectable items like in Halgarad?
[13:57] <~john> Could even be considered NPCs -- which are really called Actors.
[13:57] <Moldew> Like the little wolves for quest.
[13:57] <Zewt> Sounds good John. Are you going to just send out another PM when you are ready for use to start populating?
[13:58] <~john> Yeah they are not targetable, so we'll likely have to remove them via DB Editor->Placements
[13:58] <Zewt> Oh though of another question.
[13:58] <~john> Zewt, yes. I'll need a few weeks probably to fix a few things in the editor that changed with teh DB schema.
[13:58] <Moldew> If you placed the door as an actor, couldn't you click it them to get reticule?
[13:58] <Moldew> reticle
[13:59] <~john> from what I understand, you have to change the Entity Types value to get it to behave differently.
[13:59] <Zewt> In many places when a mob is killed it could be replaced by any number of other mobs. Where is that code handled?
[13:59] <~john> The problem with that is remembering what the settings were before.
[13:59] <~john> Zewt, those are the Placeholders I mentioned earlier.
[13:59] <~john> Those you build in-game with the .spawn combine command.
[14:00] <Moldew> I think he means you kill something and spawns another mob.
[14:00] <Moldew> Like you kill somethign that splits into 2 mobs.
[14:00] <Zewt> no.
[14:00] <Moldew> ok
[14:00] <Zewt> I mean kill a melee, after 6min a ranged guy spawns
[14:01] <Zewt> all the same group of mobs though.
[14:01] <Zewt> relative to that area
[14:01] <Moldew> Ah, that is .spawn combine..(right?)
[14:01] <~john> yeah, when you wander through New Telon now, you will find multiple NPCs standing in either the exact same x,y,z (placeholders) or see multiple types of NPCs in the same general area (wanderers)
[14:02] <Zewt> ok. glad i asked. I missed that part.
[14:02] <~john> Perfect example is the shore across from Sun Village in IoD.
[14:02] <~john> If you go there, you will see up to 4 types of mobs that clearly randomly spawn. tagging 4 of them and doing a .spawn combine will result in each 1 of the types having a 25% chance to spawn
Rottstein:
Quest Rewards / Progress (LUA)
[14:02] <Headache> Will the quest 'drops' code be in LUA files? If I am supposed to collect 10 frog teeth, would that code be in LUA for all frogs in an area?
[14:03] <~john> Headache, yes. Quest Rewards are part of the Quest LUA Script when you finish the quest.
[14:03] <~john> Like, GiveExp(1000), GiveCoin(2000) and GiveItem(1234)
[14:04] * Headache is now known as Rottstein
[14:04] <~john> hah oh it's you!
[14:04] <~john> hey rotty
[14:04] <Rottstein> Yeah thiss had a default nick for me that I used long ago.
[14:04] <Moldew> Assuming it could be random? Like the frog teeth only have 50% drop rate?
[14:04] <Kandra> But to answer the case Moldew talked about, when two mobs spawn right when you kill the first one... I guess there will be a LUA.Spawn(id) or something.
[14:04] <Zewt> Sounds great John. Thanks
[14:05] <Zewt> We need you working at our studio
[14:05] <~john> no Zewt. And yes Moldew, there are two ways (off the top of my head) to gain Quest loot: one is given directly by the quest step, and the quest reward at the end.
[14:06] <~john> For quest steps, ie 1/10, that is just NPC Loot which follows the general Loot rules and percentages.
[14:06] <~john> BUT! When you are fighting a mob for his teeth, when one drops as Loot, the quest script also dings that you got one.
[14:07] <~john> So IF you loot it, the quest step gets advanced, if that makes sense.
[14:07] <Rottstein> It should not sow as loot if you do not have the quest though. Vanguard only let you get quest rewards if you had the quest.
[14:07] <Rottstein> show*
[14:07] <Rottstein> err quest 'drops' not rewards
[14:07] <~john> Kandra, yes. There will be triggers in LUA something like function on_death() will spawn_npc(id), as you said.
[14:08] <~john> Rott, yes. You won't ding a quest step if you don't have the quest. Unless you mean the loot item itself.
[14:09] <Moldew> Loot item itself doesn't show up unless you are on the quest.
[14:09] <Moldew> Wait, I take that back.
[14:09] <~john> Hmm, in that case it may just have to be all LUA handled.
[14:10] <Kandra> Some quest drops worked like that, others didn't.
[14:10] <Moldew> Highlighting wolves in Halgarad doesn't show ! unless you are on the quest.
[14:10] <~john> EQ2's quest system can do either. Loot off the NPCs loot lists dings the quest step, or a LUA-only random draw that you got item 1234, and dings the step. It can even place the item in your inventory, even though it was not "looted" off the NPC.
[14:11] <~john> oh, the ! means quest item?
[14:11] <~john> hah Zewt, I meant "np" up there, not no. I would love to work at a gaming studio and get paid :D
[14:12] <Moldew> If you have a quest to kill 10 frogs (no looting) where is the LUA for that?
[14:14] <Moldew> What if your quest can advance if there is more than 1 npc you can kill to advance?
[14:14] <~john> Moldew, it might be something like this: http://eq2emulator.net/wiki/index.php/L ... stStepKill
[14:15] <~john> AddQuestStepKill(Quest, StepID, StepText, Quantity, Percentage,TaskGroupText, Icon, NPC ID(s))
[14:15] <Moldew> Ah, can have more than one ID, ok.
[14:15] <~john> In your quest script, you will use AddQuestStepKill which is the detail of the step, how many you have to kill, the percent chance the kill will count and the list of NPC IDs that count towards the kill count.
[14:15] <~john> stuff like that.
[14:16] <Moldew> Got it.
[14:16] <~john> I'm purposely trying to make this very similar to EQ2's LUA system, so when you guys get bored of VGO, you can go help Jabantiz and Zcoretri with EQ2 :D
[14:16] <Zcoretri> :)
[14:17] <~john> plus, I might be able to implement many of the LUA functions myself if the systems are similar.
[14:18] <Zewt> The benies are great John, but working in gaming is highly unreliable. Only as good as your last game. And if you have a stinker, then shit gets real.
[14:18] <~john> haha Zewt ;) Okay, Lokked and Xinux are both AFK so I'll finish the 2015 goals with them maybe tomorrow. Meanwhile, if there's no more Content/LUA questions, I'll talk to Faux about Abilities - the next big thing ;)
[14:19] <~john> but chime in with any Content-related thoughts you have, I'll address them as I can.
[14:19] <Rottstein> I do have one question. is how progress is stored when you log off.
[14:20] <~john> Quest progress?
[14:20] <Rottstein> yes
[14:21] <~john> Each Quest is a record in your character_quests tables. They are DB entries that get saved with the character updates as you complete each step, and reloaded when you come back online.
[14:22] <~john> like if the quest has 4 steps, each saying get 10 items... each step is in the table with your current counts recorded.
[14:26] <~john> Content Dudes: If you want to see what some of our LUA functions will look like, browse this huge list: http://www.eq2emulator.net/wiki/index.p ... _Functions
Faux:
Abilities - current and future plans
[14:24] <~john> For 2015, devs have 2 primary objectives; 1) Server Stability and 2) as many VG systems implemented as we can muster, to at least 75% functionality.
[14:25] <~john> A huge system that we'll tackle first is Abilities. Faux already got the data sorted out, our books populated, we can even learn new abilities.... just can't use them yet.
[14:25] <~john> Faux, if you got your ears on, go ahead and tell me where you are and what's next.- [14:26] <Faux> Ok, so to sum up quickly. All characters get a starting set of abilities populated from the denormalized table. All trainers (unless there are 1-off trainers somewhere) have been populated with all the abilities they can train.
[14:27] <Faux> The way it works now is if you go to a trainer that is your class or your archetype, you can see all your abilities level 1-50. If you go to a another class trainer or another archetype trainer, you will only see the generic abilities that every class gets.
[14:29] <Faux> Abilities you can train, show up white, the rest are red. If you change your level in the db, you can train all the abilities up to that level and they will populate in your book in the correct tab. When your character saves, it will compare all of your current abilities to the db table that holds your abilities and sync them up. Its bidirectional to make sure you don't know Quickening Jolt forever once its cast on you, for instance.[/list:u]
[14:29] <Rottstein> Are learned abilities going to be on the trainers until they can be learned in game, or is that a system that will be implemented at the same time and you can learn them from mobs like you are supposed to?
[14:29] <~john> btw, Xinux implemented .setlevel too, so I think you can change it dynamically to test this.- [14:29] <Faux> Learned abilities will be implemented with combat through the Lua scripts. As of now, they are not trainable, but its easy to make them trainable.
[14:30] <Faux> All abilities have an "is_trainable" flag in the db. Set it to 1 and it will show up on trainers.
[14:30] <Faux> John, I also took care of your request to be able to reset abilities if they failed to load, but I did it in a different way.
[14:32] <Faux> I wanted to be able to handle all cases of failure or impartial loading. So I altered the trainer script so that you can see all of your abilities on your trainer rather than just your adventuring abilities. So instead of resetting abilities, you just visit your trainer and anything you should have in your book, will be white, including generics and racials.
[14:32] <Faux> So if you show up without abilities, go to trainer, train the white ones, and then it will sync the db at the next character save.
[14:33] <Faux> So all the code to put abilities into the game is functional and I don't crash at all on my dev server. I'll commit the recent changes soon and hopefully we can start testing on New Telon for new crashes.[/list:u]
[14:34] <~john> okay, sounds good.
[14:34] <Moldew> Very nice, Faux. :)
[14:34] <~john> One question, regarding your Quickening Jolt comment.
[14:34] <Faux> The one thing I want to do before I commit though, is finish streamlining the code to make sure there are no memory leaks and to boost performance. We are doing something with the trainer routine now that we shouldn't be doing, i.e. passing a vector of actual data structs rather than by reference. I gotta fix that.
[14:34] <Faux> Shoot John.
[14:35] <~john> Are you adding to MY character_abilities table, effects that are cast on me by others?
[14:35] <~john> and when they wear off, then removing them?
[14:35] <Faux> Well, I guess I don't have to. But if QJ is cast on you, it gets added to the character abilities map and pushed to your spellbook.
[14:36] <~john> Oh really, that's interesting.
[14:36] <Faux> I could probably just push the ability to the ability book, but not add it to the character map.
[14:36] * Faux (IceChat77@hidden-D7966D8A.dyn.optonline.net) Quit ( Connection reset by peer )
[14:37] * Faux (IceChat77@hidden-D7966D8A.dyn.optonline.net) has joined #VGOEmu
[14:37] * ChanServ sets mode +o Faux for #VGOEmu
[14:37] <~john> well you got me thinking, because I am not sure we ever worked out in EQ2Emu how to persist effects across zoning or camping and coming back (Zcoretri?)
[14:37] <@Faux> Bah, got kicked. I think we have to add it to the db because if you camp out with the effect active, its still there next time you log in.
[14:38] <~john> That is an interesting solution.
[14:38] <@Faux> So the save function works by querying the character_abilities table for a character_id, it sorts and loads into a container that checks both ways for consistently, and then fixes the db accordingly.
[14:39] <@Faux> I also added debug lines to the beginning and end so you can see that abilities is not causing the save character proble :)
[14:39] <~john> yeah, we're going to talk alot about some of these DB hits we're doing :) There's a better way to manage that I think, using map's of things to delete or whatnot, vs hitting the DB every save.
[14:40] <~john> Be sure to grab the latest SVN, as I have revamped SaveCharacter greatly.
[14:40] <@Faux> Yeah, that sounds good John.
[14:40] <~john> So if there's nothing more about the current implementation, Faux, let's talk about what's next.
[14:41] <@Faux> In other news, I also added a handler for using an ability. I haven't committed it yet, but I can use an ability and so far it just triggers the global cooldown and the ability refresh. But that leads into whats next...
[14:41] <~john> Players see their pretty icons, and slam on them anxiously. You have a plan for implementing Casting? or is that going to roll into Combat?
[14:41] <~john> haha there you go :)
[14:41] <@Faux> You also see the cast bar
[14:41] <@Faux> I have not implemented the casting animations yet though
[14:42] <~john> No problem. Lokked and I have been discussing making our project a little more "Class-y"- [14:43] <@Faux> So whats next for abilities (after refactoring the code to be efficient and error proof) is to implement animations and a means of saving cooldowns across logouts. Not sure how to do that yet and it doesn't apply to all abilities, but long duration cool downs from things like Recall, and Recall to Guild/House, and racial abilities are support to persist through camping[/list:u]
[14:43] <~john> For example, adding the Ability class entirely, to handle functions related to them outside the List.
[14:43] <~john> meaning, I do not want to see one function in WorldDatabase that casts a spell on someone (lol)
[14:44] <~john> I'm also not convinced that shoving everything in WorldCharacter is the best idea. but that's what we'll discuss with the Red names.
[14:44] <@Faux> I know :). Right now the routine is in chunkserver because thats what handles opcodes. Its just a temp stuf right now
[14:44] <~john> yeah, that's the part that is honestly confusing to me... the 2 servers in one.
[14:44] <Zcoretri> we dont have persistence between zoning in EQ2Emu yet
[14:45] <~john> there. see? :D
[14:45] <Zewt> John, I have another question. How are the sounds in an specific location recreated?
[14:45] <~john> Faux, do you remember in VG, if i /camped or crashed out and came back, I still had all my buffs?
[14:45] <Zewt> like crickets and wolves and so forth
[14:45] <@Faux> I don't think the VG client cares, so basically for a few abilities, I think we will need a cooldown table that tracks char_id, ability_id, and cooldown. But it needs to be smart enough to tick while offline.
[14:46] <@Faux> Buffs are supposed to persist across camps/crashes and are not supposed to tick while offline.
[14:46] <~john> Zewt, VG sounds are actually part of the Actor class. Subclass called SGOSound3DS or something like that. They are parsed just like NPCs, with coordinates to dictate the boundaries. When you step into the "box", the effect plays.
[14:47] <~john> that's all Unreal Script magic, we had to do nothing but load the data into SGOSound3DS
[14:48] <@Faux> So in summary, I think when you cast recall, it should add the char_id, and the cooldown time to a table. When you load a character, it should check that table for the cooldown time, if its earlier than the login time, there is no residual cooldown. If it hasn't expired, we calculate the time remaining and send the "abilityrefresh" packet.
[14:49] <@Faux> It shouldn't get too crazy since each character will probably only have 2-3 abilities that the cooldowns persist.
[14:49] <~john> Oh, I see what you're saying.
[14:49] <@Faux> Racials and recalls are all that come to mind right now
[14:50] <~john> in character_abilities, just add a column for ticks or whatever, if > 0, you can't use it. Only Save that to the DB when the client zones or disconnects, otherwise keep it in the map<> so it's not hitting the DB constantly.
[14:50] <~john> when designing data-related stuff, always think of the LEAST possible taps to the database. Flush only when necessary, etc.
[14:51] <~john> Big Picture: 1000 players online at once. We will destroy the database server if we're tapping it 10 times a second.
[14:52] <@Faux> Ok. I'll figure something out and run it by you.
[14:52] <~john> I also want to get away from the habit of doing a DELETE/INSERT to update player info, and do more of the maps that compare. Then we're only deleting once, and UPDATING instead of Delete/Insert.
[14:53] <~john> when I write stuff that hits the DB, I write the code first, then figure out how to remove 90% of those hits ;)
[14:55] <@Faux> Looking to the future for abilities and supporting combat, we need to develop a schema for containing the data that is currently included in the ability_description field.
[14:55] <@Faux> I'm sure my code is not as db efficient as it could be :)
[14:55] <~john> what is that, the dynamic effect values?
[14:56] <~john> Restores #334## life to your defensive target.
[14:56] <@Faux> So when you heal a player, it can look up in a container that it affects attribute xxx for a value of +yyy or -yyy etc,
[14:57] <@Faux> Something to make the code more generic and broad.
[14:57] <~john> The Ability itself will have a LUA script for that. Not held in the database, necessarily.
[14:58] <~john> so the Heal ability will have a LUA function SetAttribute(player, attribute, value) or something like that.
[14:58] <~john> is that what you're talking about?
[14:58] <@Faux> Yes.
[14:59] <~john> also, when we "denormalize" Abilities, it will become clearer how we'll handle the replaceable variables like my paste above.
[14:59] <~john> we can make it something like "Restores #%i## life to your defensive target." and push in the int value.
[15:00] <~john> I left all those values in the raw data so we knew what they were according to the character that collected it.
[15:01] <@Faux> Oh another thing we should test in the meantime is inflating char attribute values to see if that affects how the client displays the description.
[15:02] <@Faux> There is the default value and there is the value modified by stats. I think the client calculates the modified values.
[15:02] <@Faux> Because the modified value shows up for me even though its not expressed in the db
[15:03] <~john> yeah i think eq2's client does that too.
[15:04] <@Faux> Oh side note that semi-relates. There is equipment that shows up already augmented so we'll need to strip out the augments from the item db.
[15:04] <~john> yeah, the item_attachments table can be nuked entirely. we only need that for character_item_attachments, I think,
[15:05] <@Faux> Ok, thats good. I
[15:05] <@Faux> d
[15:05] <@Faux> I'd hate to be the guy that had to fix that table
[15:05] <~john> The item_modifiers table is likely skewed data, too then.
[15:05] <~john> because what we collected and parsed is whatever that item had while you carried it.
[15:06] <~john> ie, a socketed item probably had that +20 str in the item_modifiers parsing.
[15:06] <~john> btw, "that guy" is probably me or Xinux lol
[15:06] <Blackstorm> <- back ^^ hi all
[15:07] <@Faux> Luckily, if we have to manually fix an item, its really easy to see what the base stats are because all augmented stats show up as purple in the mouseover.
[15:07] <~john> wb Black
[15:07] <@Faux> Ok, I'm running out of time for now so I'll just sum up the 0.2 stuff really fast...
[15:07] <~john> ok thanks Faux.
[15:07] <~john> we're almost done today. I have to do this tomorrow, too :)
[15:08] <@Faux> For 0.2, General abilities and adventuring abilities are done as far as being visually available and trainable in game.
[15:08] <~john> While Faux is summarizing, anyone have any questions about 2015?
[15:08] <@Faux> Starting abilities are complete as well.
[15:09] <@Faux> Training of abilities is complete with the exception being cost since currency is not implemented yet.
[15:09] <@Faux> Learning of abilities by mob combat is at 0% since we need to initiate combat for that, but it should be pretty easy. It wasn't a complex system
[15:11] <@Faux> And in 0.3, I'm going to tackle lua scripting for abilities (PC and NPC), persisent cooldowns for special abilities, and animations.
[15:12] <@Faux> But I definitely want to get all the current ability changes tested on New Telon, because I'm not getting crashes now, but on New Telon it may reveal some flaws.
[15:12] <@Faux> I'll commit within the next couple of days and hopefully we can push to NT when you think its ok.
[15:12] <~john> Learning abilities off mobs; is that just if THEY cast an ability, you have a % chance to learn it?
[15:12] <~john> or is it that the Mob just awards that because it's configured to be a reward?
[15:13] <@Faux> No, totally unrelated to what a mob does as best I can tell. Basically on a mob you can learn an ability from, you have to be tanking it as it passes 50% (roughly) to have a chance at learning. You had to do that a variable number of times (3-7 or so) to fully learn the ability and have it added to your book
[15:14] <~john> next, Faux... what effect does this slash command have? /trainerabilities
[15:14] <~john> http://vgoemulator.net/index.php?p=projman&id=1026
[15:14] <@Faux> Probably made it fun for soft caster classes.
[15:14] <@Faux> No idea. I'll try it in the client to see.
[15:15] <@Faux> It might just bring up the training window if you are close enough and have a trainer targeted
[15:15] <~john> going to assign it to you for now, i've been closing lots of /slash command tasks as they get resolved as we add functionality - nothing special about the command.
[15:18] <~john> Going to leave Tab: Adventuring at 50% until Casting is implemented.
[15:19] <~john> Same with Tab: General. While they will trigger no matter where they are, I want to make sure it doesn't matter if it's a macro/hotbar or book icon or /cast command.
[15:19] <@Faux> I just checked it. If you have your training dialogue window open and type /trainerabilities it will output a list of abilities you can train to your chat box. If you are not training, it just says "You are not training.". If you have no abilities to train, it says "No abilities to train." No packets are getting sent to the worldserver, so it appears to be handled by the client.
[15:20] <~john> okay, then i can delete the task. Thanks! If you encounter client-side-only stuff like that, feel free to delete it.
[15:20] <~john> just be careful when deleting tasks, there is no "are you sure" lol
[15:20] <@Faux> Np, I will. Gotta run now before the wife kills me. I'll be back tonight though for general dev chat while I get some work done.
[15:21] <@Faux> Take care all.
[15:21] <~john> heh thanks Faux.
[15:21] * Faux (IceChat77@hidden-D7966D8A.dyn.optonline.net) Quit ( Quit: Take my advice. I don't use it anyway )
[15:22] <~john> okay, anything else for today? I'll have another session tomorrow that I think Volt can attend, probably the same time frame.
[15:22] <~john> so if you think of anything else, visit again tomorrow or post it after I post this log in Dev Chats.
[15:23] <Kandra> Time for me to log off. Turned out that the problem I've spent several hours trying to solve is a bug in the unreal engine. *mumbles*
[15:23] <~john> lol what are you coding, Kandra?
[15:23] <Kandra> Working on a prototype for my next game.
[15:24] <~john> nice. i am not sure why I am not writing my own game, maybe someday :)
[15:25] * Kandra (Kandra@hidden-EBEA4A06.cust.bredbandsbolaget.se) Quit ( Quit: Leaving )
[15:25] <~john> okay all, thanks for hanging out for 8 hours today :D I'm off to get something else done. See you tomorrow.
- [14:43] <@Faux> So whats next for abilities (after refactoring the code to be efficient and error proof) is to implement animations and a means of saving cooldowns across logouts. Not sure how to do that yet and it doesn't apply to all abilities, but long duration cool downs from things like Recall, and Recall to Guild/House, and racial abilities are support to persist through camping[/list:u]
- [14:29] <Faux> Learned abilities will be implemented with combat through the Lua scripts. As of now, they are not trainable, but its easy to make them trainable.
- [14:26] <Faux> Ok, so to sum up quickly. All characters get a starting set of abilities populated from the denormalized table. All trainers (unless there are 1-off trainers somewhere) have been populated with all the abilities they can train.
- [12:52] <~john> Content Development is multi-faceted; You will spawn entities in the world, you will design and build LUA scripts for NPC interaction and movement, and LUA scripts for Quest Steps. I would estimate 90% of the labor in Content Design is LUA scripting.
- [12:44] <~john> So back to DB Editor: Literally every change you make gets recorded in a Logs table, which builds the SQL queries that will be used to update New Telon or other worlds. This is why we use VGO's DB editor and not some local GUI.
Re: Dev Chat: 01/03/2015 - Dev Meeting / Q&A
Thanks for posting this John. Sorry I could not make it. I had an absolute terrible night with a stomach bug. I'm feeling a bit better so I should be able to be around tomorrow. Are we shooting for roughly the same time as the meeting today (8am pst)?
- John Adams
- Retired
- Posts: 4581
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
Re: Dev Chat: 01/03/2015 - Dev Meeting / Q&A
Yeah, if we try gathering between 8-10am PST, that works for me. It will give others time to review this chat log and prepare any questions or comments for tomorrows session.
Re: Dev Chat: 01/03/2015 - Dev Meeting / Q&A
I got through reading the entire log. I'm just going to post my questions/thoughts on things I had opinions on. Anything I don't comment on sounds good so far! These can be answered or I can bring them up at the meeting tomorrow. It doesn't matter to me. Also note, I am scatter brained, so if any of this doesn't make sense, that's why. Oops
Multiple Servers per Account
I'm more of a visual person, so I just want to make sure I am understanding this correctly. The way we are going to work around the issue with only one server appearing online is going to work like below:
Multiple Servers per Account
I'm more of a visual person, so I just want to make sure I am understanding this correctly. The way we are going to work around the issue with only one server appearing online is going to work like below:
- Player logs into created account on launcher.[/*
2l25ijea]
- If there is only one server up, it will auto-assign them to that server.[/*
2l25ijea]
- I'm not sure it was stated what would happen if there is more than one world up?[/*
2l25ijea]
- Upon character creation, that account is now permanently tied to that server.[/*
2l25ijea]
- To get to another server, you would create a new account.[/*
2l25ijea][/list:u]
If this is correct, I personally do not want to remember what account is tied to what server. I would much prefer Lokked's way of using the launcher, which from my understanding is:- Player logs into created account on launcher[/*
2l25ijea]
- List of active worlds is shown from database[/*
2l25ijea]
- Player selects what server they want to play on and clicks Play[/*
2l25ijea]
- Player is taken to character create/select for selected server.[/*
2l25ijea][/list:u]
It is not my decision to make, but I just thought I would give you my personal input.
Community Growth
I agree with Moldew on this point. We should try and keep a relative up-to-date news post on the portal for people to see where we are and what we're working on. Also, if they would like to help, what they can do to help. We have a few people who I don't believe post here, but are looking forward to the emulator over at rerolled.org. I post there often when we have some decent updates as does Xinux. I like to try and keep them updated to keep them excited for the emulator, so having a place they can go to quickly when they and new people want to check out what's going on would be beneficial.
Content Development
It was stated that .spawn combine is more for placeholders and .spawn remove is for clean up. I understand that. I would like some clarification of what .spawn remove is doing exactly. Is it removing the NPC from the database, removing x,y,z, hiding them? Ishiding an NPC in the DB editor the same thing as .spawn remove?
I am curious about this, because it could be quite possible to remove a spawn we did not intend to, especially since I am expecting to be using the commands in a macro.
NPC Details
From my understanding, since all NPC data (HP, stats, damage) was stored serverside, we were unable to collect that data. For now, all NPCs will be based off a level & dot value for HP/difficulty, with a not-yet-determined way to up different NPC stats. Is this correct?
- Player logs into created account on launcher[/*
Re: Dev Chat: 01/03/2015 - Dev Meeting / Q&A
Hi Crycle, hope you feel better soon!
If you accidentally remove a spawn, you can put it back using DB Editor.
[13:03] <Moldew> Sounds like there are multiple ways then to deal with it - spawn combine, remove, or db editor. Is there a prefered method?
[13:03] <~john> It's harder to clean up dupes in the DB Editor, because you cannot visually see them. That's why we made in-game commands.
[13:03] <@Lokked> DBEditor is for adding spawns to the world. Think of .combine and .remove as cleaning up the World.
[13:04] <~john> Me personally, I'd use .spawn remove to kill dupes, .spawn combine to build placeholders, and DB Editor to replace something you accidentally deleted.
Hope that answers your question...(?)
Moldew
If you accidentally remove a spawn, you can put it back using DB Editor.
[13:03] <Moldew> Sounds like there are multiple ways then to deal with it - spawn combine, remove, or db editor. Is there a prefered method?
[13:03] <~john> It's harder to clean up dupes in the DB Editor, because you cannot visually see them. That's why we made in-game commands.
[13:03] <@Lokked> DBEditor is for adding spawns to the world. Think of .combine and .remove as cleaning up the World.
[13:04] <~john> Me personally, I'd use .spawn remove to kill dupes, .spawn combine to build placeholders, and DB Editor to replace something you accidentally deleted.
Hope that answers your question...(?)
Moldew
Haiku is easy -
But sometimes it makes no sense.
Refridgerator.
But sometimes it makes no sense.
Refridgerator.
Re: Dev Chat: 01/03/2015 - Dev Meeting / Q&A
[quote="Moldew"]Hi Crycle, hope you feel better soon!
If you accidentally remove a spawn, you can put it back using DB Editor.
[13:03] <Moldew> Sounds like there are multiple ways then to deal with it - spawn combine, remove, or db editor. Is there a prefered method?
[13:03] <~john> It's harder to clean up dupes in the DB Editor, because you cannot visually see them. That's why we made in-game commands.
[13:03] <@Lokked> DBEditor is for adding spawns to the world. Think of .combine and .remove as cleaning up the World.
[13:04] <~john> Me personally, I'd use .spawn remove to kill dupes, .spawn combine to build placeholders, and DB Editor to replace something you accidentally deleted.
Hope that answers your question...(?)
Moldew[/quote]
But this was also stated, which is what confused me.
[13:06] <Kandra> And you can spawn the removed pawns again when it's time to make the LUA scripts?
[13:07] <~john> No once a "placement" is removed, it's deleted from the database entirely. Not the NPC, just his x,y,z
Also, how do we determine which spawn has been removed from the world by looking at the DB Editor? (I forget the link to the DB Editor, and heading to bed now).
If you accidentally remove a spawn, you can put it back using DB Editor.
[13:03] <Moldew> Sounds like there are multiple ways then to deal with it - spawn combine, remove, or db editor. Is there a prefered method?
[13:03] <~john> It's harder to clean up dupes in the DB Editor, because you cannot visually see them. That's why we made in-game commands.
[13:03] <@Lokked> DBEditor is for adding spawns to the world. Think of .combine and .remove as cleaning up the World.
[13:04] <~john> Me personally, I'd use .spawn remove to kill dupes, .spawn combine to build placeholders, and DB Editor to replace something you accidentally deleted.
Hope that answers your question...(?)
Moldew[/quote]
But this was also stated, which is what confused me.
[13:06] <Kandra> And you can spawn the removed pawns again when it's time to make the LUA scripts?
[13:07] <~john> No once a "placement" is removed, it's deleted from the database entirely. Not the NPC, just his x,y,z
Also, how do we determine which spawn has been removed from the world by looking at the DB Editor? (I forget the link to the DB Editor, and heading to bed now).
- John Adams
- Retired
- Posts: 4581
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
Re: Dev Chat: 01/03/2015 - Dev Meeting / Q&A
Posting my answers here vs IRC so everyone can consume the info --
[quote="Cyrcle"]Multiple Servers per Account[/quote]
Lokked convinced me to go with his plan as it makes more sense to keep things as simple as possible on the user-end. Picking a server will achieve the same goals I was after, just took a different path.
[quote="Cyrcle"]Community Growth
I agree with Moldew on this point. We should try and keep a relative up-to-date news post on the portal for people to see where we are and what we're working on. Also, if they would like to help, what they can do to help. We have a few people who I don't believe post here, but are looking forward to the emulator over at rerolled.org. I post there often when we have some decent updates as does Xinux. I like to try and keep them updated to keep them excited for the emulator, so having a place they can go to quickly when they and new people want to check out what's going on would be beneficial.[/quote]
This is harder to do than you expect, or it certainly would have been done ahead of time (dynamic Portal content). Since I had to develop the portal myself (all other portal software sucks ass), it's not dynamically reading data from anywhere so every change means I have to manually edit the module text. I do not have time to do this every time we achieve something.
I have since added links to Current Features, Player Guide, and VGOPlayer.com Community. What I can take out of your suggestions (brilliant, btw) is to modify the content on the portal to, instead of being "News" make it as you say - specific info to the project, how to help, SVN log feed, anything more specific to show we're alive and well. Is that better?
[quote="Cyrcle"]Content Development
It was stated that .spawn combine is more for placeholders and .spawn remove is for clean up. I understand that. I would like some clarification of what .spawn remove is doing exactly. Is it removing the NPC from the database, removing x,y,z, hiding them? Ishiding an NPC in the DB editor the same thing as .spawn remove?
I am curious about this, because it could be quite possible to remove a spawn we did not intend to, especially since I am expecting to be using the commands in a macro.[/quote]
.spawn remove performs a SQL Query that basically does this:
`spawn_location_placements` is the specific x,y,z and chunk that the entity is populated into. Removing the Placement does not remove the Entry, nor the Spawn record data itself.
The DB Editor->Migrate Spawns tool has nothing to do with in-game commands at all. It's merely a tool for you to pull data out of a huge "Raw" database, and move the data to New Telon for you to use for Content Design. Let's say for example you have Sentry Bob spawned 20 times in Halgarad on New Telon. In the Raw Database, he has 200 spawn Placements, but my auto-populate script determined only 20 of them were "unique" in respect to appearance and placement in the world. Let's say that now you do a .spawn remove on all 20 of Sentry Bob placements, and then you realize you just accidentally deleted ALL of Sentry Bob. OOPS! No fear, you go back to DB Editor->Migrate Spawns, find Sentry Bob and his 180 other remaining spawn placements, and simply "Spawn This" (one entry). You go back to New Telon and pick him up and move him wherever you want him to be. That is the cheapest version of the story
I am currently making modifications to the DB Editor where you can look up Migrated data that is already migrated, so you can re-migrate it. Currently, DB Editor will not show entries you already moved, to avoid confusion. I'll make a separate function for this.
[quote="Cyrcle"]NPC Details
From my understanding, since all NPC data (HP, stats, damage) was stored serverside, we were unable to collect that data. For now, all NPCs will be based off a level & dot value for HP/difficulty, with a not-yet-determined way to up different NPC stats. Is this correct?[/quote]
Yep, exactly. What we get in collection was any data the server sent to the client, only. We did not get STR/DEX/HP/Power of NPCs, but we did get UI "bar" updates -- like how much health/power an NPC might have. That info is likely unhelpful though, since it's probably just a % to display, not a hard number calculated in the client.
What we will rely on for building NPC's accurately are parsings of combat logs (Zewt has tons), or fansites that might have detailed NPC stats (doubtful), and your great memories. When it comes time to start combating in VGOEmulator, it will really be the player feedback that helps us tweak the encounters and find those magic values for NPC "Attribute". If that makes sense.
[quote="Cyrcle"]Multiple Servers per Account[/quote]
Lokked convinced me to go with his plan as it makes more sense to keep things as simple as possible on the user-end. Picking a server will achieve the same goals I was after, just took a different path.
[quote="Cyrcle"]Community Growth
I agree with Moldew on this point. We should try and keep a relative up-to-date news post on the portal for people to see where we are and what we're working on. Also, if they would like to help, what they can do to help. We have a few people who I don't believe post here, but are looking forward to the emulator over at rerolled.org. I post there often when we have some decent updates as does Xinux. I like to try and keep them updated to keep them excited for the emulator, so having a place they can go to quickly when they and new people want to check out what's going on would be beneficial.[/quote]
This is harder to do than you expect, or it certainly would have been done ahead of time (dynamic Portal content). Since I had to develop the portal myself (all other portal software sucks ass), it's not dynamically reading data from anywhere so every change means I have to manually edit the module text. I do not have time to do this every time we achieve something.
I have since added links to Current Features, Player Guide, and VGOPlayer.com Community. What I can take out of your suggestions (brilliant, btw) is to modify the content on the portal to, instead of being "News" make it as you say - specific info to the project, how to help, SVN log feed, anything more specific to show we're alive and well. Is that better?
[quote="Cyrcle"]Content Development
It was stated that .spawn combine is more for placeholders and .spawn remove is for clean up. I understand that. I would like some clarification of what .spawn remove is doing exactly. Is it removing the NPC from the database, removing x,y,z, hiding them? Ishiding an NPC in the DB editor the same thing as .spawn remove?
I am curious about this, because it could be quite possible to remove a spawn we did not intend to, especially since I am expecting to be using the commands in a macro.[/quote]
.spawn remove performs a SQL Query that basically does this:
Code: Select all
DELETE FROM spawn_location_placements WHERE id = xxx
The DB Editor->Migrate Spawns tool has nothing to do with in-game commands at all. It's merely a tool for you to pull data out of a huge "Raw" database, and move the data to New Telon for you to use for Content Design. Let's say for example you have Sentry Bob spawned 20 times in Halgarad on New Telon. In the Raw Database, he has 200 spawn Placements, but my auto-populate script determined only 20 of them were "unique" in respect to appearance and placement in the world. Let's say that now you do a .spawn remove on all 20 of Sentry Bob placements, and then you realize you just accidentally deleted ALL of Sentry Bob. OOPS! No fear, you go back to DB Editor->Migrate Spawns, find Sentry Bob and his 180 other remaining spawn placements, and simply "Spawn This" (one entry). You go back to New Telon and pick him up and move him wherever you want him to be. That is the cheapest version of the story
I am currently making modifications to the DB Editor where you can look up Migrated data that is already migrated, so you can re-migrate it. Currently, DB Editor will not show entries you already moved, to avoid confusion. I'll make a separate function for this.
[quote="Cyrcle"]NPC Details
From my understanding, since all NPC data (HP, stats, damage) was stored serverside, we were unable to collect that data. For now, all NPCs will be based off a level & dot value for HP/difficulty, with a not-yet-determined way to up different NPC stats. Is this correct?[/quote]
Yep, exactly. What we get in collection was any data the server sent to the client, only. We did not get STR/DEX/HP/Power of NPCs, but we did get UI "bar" updates -- like how much health/power an NPC might have. That info is likely unhelpful though, since it's probably just a % to display, not a hard number calculated in the client.
What we will rely on for building NPC's accurately are parsings of combat logs (Zewt has tons), or fansites that might have detailed NPC stats (doubtful), and your great memories. When it comes time to start combating in VGOEmulator, it will really be the player feedback that helps us tweak the encounters and find those magic values for NPC "Attribute". If that makes sense.
Re: Dev Chat: 01/03/2015 - Dev Meeting / Q&A
Bah, I didn't know about this meeting. I guess I should get busy reading.
I have no idea why, but I no longer get email from vgoemulator.net. Did something change around the end of November?
I have no idea why, but I no longer get email from vgoemulator.net. Did something change around the end of November?
Re: Dev Chat: 01/03/2015 - Dev Meeting / Q&A
Thanks for this write up John, it is very much appreciated!
I have nothing further to add other than needing to learn the content system properly and watch the video you are going to make that explains the process and tools better?
I have nothing further to add other than needing to learn the content system properly and watch the video you are going to make that explains the process and tools better?
Re: Dev Chat: 01/03/2015 - Dev Meeting / Q&A
Question for john or current devs regarding "flymode" - is this going to be similar to using a flying mount or are we going to have a form of "noclip" so we can run through objects as well?