by alarial | Jan 11, 2016 | GameDev, projects, Unreal Engine 4
The new year often brings a feeling of rebirth to people, projects, relationships, or any number of things. For myself and the Squirrel Alienz studio we are renewing our commitment to creating fun games and developing engaging experiences. We have a high-level path forward for the year and have already begun the first steps of increasing engagement, focusing on artistic resources, and redesigning the website. I have some really exciting plans for the future and can’t wait to share more of them with everyone!
Our primary and immediate focus is Alsherok: Arena which will combine much of the RPG elements of races, classes, and skills with an action arena experience that will have you fighting for your life. Go check out the page for more information (Alsherok: Arena)! The game features multiple classes, races, skills, arena paths, and challenges. Over the next few weeks I will be updating this page with more specific details about the game as well as some planned features.
As I also mentioned, there are larger plans in the works. I will share some of those as I build out the timeline so that everyone can see where we are and where we are headed as a company. 2015 was a year full of learning and discovery, but I plan to make 2016 the year of accomplishment and action. I will always be transparent about our process and our work because I believe community involvement requires trust on both sides and you can’t buy into something you don’t understand. Please join me in making 2016 the best year yet!
–Regards
Cameron Carroll
by alarial | Dec 21, 2015 | GameDev, keeping you hopeful, projects, Unreal Engine 4
I’ve succerssfully completed my transition over to C++ for the primary implementation of my work, updated repositories, and brought everything in-house to my own NAS because of game size issues. I am still working on testing cross-OS compilation for the game when working on either my Windows machine or my Macbook and getting everything reimplemented.
I have found that I want to approach certain pieces different now that I have had a chance to reevaluate during the transition. So I will inevitably scrap some of what I had done before. But that’s what refactoring is all about, right? 🙂
by alarial | May 8, 2015 | GameDev, MUD-life, projects
One of the developers that was to be at the core of the Alsherok project is unable to devote the time necessary to focus on the project. What this means is that I am placing the project on hold based on project size, complexity, and available resources. The work I have completed getting the flat files parsed out and into a database is not completely wasted as I learned a good deal about both the process of parsing non-standard flat files and the flexibility of Postgres. This project will stay on my list, and I still plan on tackling it. Unfortunately that will happen slightly further down the road.
by alarial | Apr 27, 2015 | GameDev, MUD-life, projects
So apparently I’ve been doing way too much work with my flat file parsing of the Alsherok files. I forgot a very key component of my database of choice, PostgreSQL: ability to act as a non-relational database such as MongoDB while retaining the power of an RDBMS! I know, that last sentence is kinda geeky. Essentially, I just needed to grab the section I wanted, turn it into JSON, and shove it directly into the database. After that, I can call the data back out using a hybrid of traditional SQL such as:
| select data->>;'Name' as Name , data->>;'Minlevel' as Level from skills; |
Which brings back the fields
as expected.
| name,level reserved~,101 "acetum primus~",60 "acid blast~",15 "acid breath~",101 ... |
I can even ensure uniqueness by adding a unique index on a particular branch of the JSON:
| create UNIQUE INDEX skills_name on skills ((data->>'Name')); |
This provides a unique entry and fast searching because.. you know.. indexes and stuff.
Needless to say, I felt the need to refactor the other flat files I’ve finished and make them all spit out JSON instead of complex table structures 😉 Thankfully that went much faster than writing them originally. I may actually meet my end of the month deadline after all.
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 | 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…)
by alarial | Dec 30, 2013 | projects
I recently considered doing some work on a long time consideration and passion project. The project is turning the old MUD where I spent many a night awake until the next day playing, building, and just generally having fun into a 3-D reincarnation. If you don’t know what a MUD is, perhaps you should pay some respect to your elders! Or just look it up on Wikipedia… damn internet has made everything so easy these days.
So the basic gist is that Alsherok would go from a text-based world to a 3-D one. No small task, to be sure. However, the entirely awesome thing about MUDs and the many games genres spawned from them is that they are modular in nature. I could throw up a starting town, a couple of zones to fight in, and call it a day! This also strangely follows the Agile iterative approach to development… fancy that.
The first biggest hurdle is getting clear sign off from the copyright holders of the original work. Luckily I can still get in touch with them, or know someone that can. There goes the internet making things easy again. I have most of the ones I need already, but there are a couple outstanding. Worst case scenario is that there will be content that I can’t include. Best case scenario is everyone consents and I can attempt to include as much as possible.
I’ve put up a project page if you want to take a look at the proof of concept and all that. It’s right… ===>>>>>> here
Thanks for reading. I’m sure we’ll talk again soon.
Recent Comments