by alarial | Apr 15, 2015 | Uncategorized
I have been caught up between regular work, school, getting over being sick, and the family over the past several weeks. I haven’t had much time to post progress or do anything highly amusing. My apologies for both.
I have continued to work on parsing out data from flat files, and gave myself a deadline of the end of this month to complete all major items there. I even communicated the self-imposed deadline to my team, so now I have to follow through!
Next steps are to document all (or at least most) high level game logic and develop a path forward. After that, it’s down to actually moving forward and hope that version control is refined enough to allow us to stay away from problems that have plagued me in UE4 up until now.
by alarial | Mar 13, 2015 | GameDev, MUD-life, projects
One of the biggest first steps of the Alsherok project, beyond basic high level architecture and categorization, is understanding the raw data from the world. Parsing the data into a format that can be easy manipulated, searched, and aggregated is key to several aspects of the project.
- We’re going to need models for mobs
- We’re going to need models for objects (weapons, armor, bags, potions, food, etc.)
- We’re going to need models for the general environment
- I like playing with data
- Understanding aggregates can help with prioritization
- Cataloged data can be transformed to meet any need
Unfortunately, all of this data is stored in individual flat files for each area. Sure, I could combine all of the files and make a huge list, but that would be unwieldy and harder to look through. Besides, if I just wanted data in one place to do basic searches, I could just use grep against the folder.
Instead, I decided to parse all of the files into a set of PostgreSQL database tables. After playing with doing it in C#, I decided the iteration time was too slow so I switched over to Python. I was able to get one set of data (the mobs) completed after a few evenings of poking it with a sharp stick, and I found that HOLY CRAP THAT IS A LOT OF MOBS! In fact, right at 2255! I won’t need that many models, but it certainly does make the task of weeding through them a bit more time consuming.
That being said, I did have some fun playing around with aggregating data on different points such as gender, race, class, and zone just to see what I was working with. Unfortunately, I’ve already blown away all the tables because I am working on parsing out the objects now, and the script is set up as an all-or-nothing deal. I may refactor it here soon to be more selective, but I am working on this with a priority on speed over re-usability.
Speaking of speed… I did have some issues with the length of time it was taking to parse, somewhere around 3 minutes for 111 files. I posted on r/Python for some feedback and got some excellent pointers on places I didn’t need to use regex, and an excellent referral to a Python profiler that instantly pointed out my bottleneck: the database connection. I was being slick and using a with statement so I wouldn’t have to worry about cleanup, but that required me to open the connection for every write. Once I moved that database connection to the top of the function and handled everything with a try:except block, I got the execution time of the script down to just over 3 seconds. Yay! But now I have to do objects, which will likely add a few more seconds.
Once my parsing code is complete, I will release it along with the DDL for the database tables so that anyone else playing around with the AFKMud codebase will have a jump start on ways to analyze their data or as a first step in switching the code to store and retrieve from a database rather than a flat file.
by alarial | Mar 3, 2015 | GameDev, projects
It looks like I will be moving forward with the Alsherok Revisited project. I have a couple of people interested in making it happen. so I might as well grab onto that while I can. Alsherok Revisited is now the primary focus of Squirrel Alienz.
My first order of business is parsing through flat files used to store all the MUD data. Each zone is its own file that contains all references to the mobs and items inside the zone… This is going to be interesting. I originally attempted to throw something together in C# and it was slowly started to work okay. However, my iteration time was too slow and there seemed to be a lot of overhead. So, I switched over to using Python. I am almost done with the first round of parsing which will net me the mobs (mobiles) and the mobprogs (mobile programs). I am storing everything in a PostgreSQL database because, you know, Postgres is pretty awesome (and open).
Once I have the mobs defined, I need to send them over for modeling review. Oi. There are so many models needed with this transition from text to 3D. Even the background descriptions will need to be represented. I can see a lot of vague translation going on here. Either way, better to get started earlier on this part. Plus having the mobs already stored in a database will allow me to pull some interesting statistics.
by alarial | Dec 27, 2014 | keeping you hopeful
I’ve been messing around with the site design here and there over the past few weeks. I don’t know when or if I will be finished. I just don’t have enough dedicated time to devote to website fun. I will probably poke and prod at it here and there until I get it somewhere I enjoy a bit more. Meanwhile, I will work on getting a proper update posted. 😉
I also realized my new theme uses the kind of tracking-based social media icons I hate. I will get rid of them. For those of you running around the internet naked without any protection (figuratively speaking… or is it?), you could at least give Privacy Badger a look. I may also get rid of Google Analytics, despite the interesting information it provides. They just happen to be the exact thing I try to educate people against.
by alarial | Nov 21, 2014 | GameDev, projects, Unreal Engine 4
While it is perfectly acceptable to handle updates within character blueprints, sometimes it doesn’t make as much sense to perform all updates immediately when in a multiplayer experience. I previously wrote about creating a game tick that could be used for timed updates, but I didn’t have a hook into how to perform those updates. I created that hook by using an event dispatcher within the world tick logic. This allowed me to add events to the dispatcher queue and execute the queue at whatever interval the world tick was running.
So the logic works something like this…
Event happens → Add reference to an event to the event dispatcher → OnWorldTick, process everything in the dispatcher queue → Empty queue and start over
(more…)
Recent Comments