Devlog #7: DopeFish Rides Again
As per my Modus Operandi, random update after months of silence!
DopeFish Lives!
The past several months have been very busy for me. I moved back to my home state after doing a bunch of film work for Devolver Digital, HBO, and a few others. I poured my heart and soul into a project that I can't speak of at the moment. But off and on through that time I cracked away at little bits and pieces of the DopeFish engine. Today marks the completion of a couple of goals I set out to accomplish.
Let's dive in to whats new, shall we?
Custom Text Lump Parser:
Yep, I hand wrote a text parser. Why the Hell would I do that? Well, certain lumps in doom wads contain text based information. This is usually simple code like Decorate or Zscript, or just a bunch of variables that contain data meant to be referenced elsewhere in the game engine, or even in the wad itself. This took a lot of work to get functioning at the level that it is right now, and it works, and that makes me happy. What does this mean for you the end user?
Decorate Scripting Support:
Yeah, so that's a thing now. You can completely define new classes for your wads using the Decorate scripting lump. Heck, you can even create a class that overwrites one of the built in class types with new behaviors, stats, or graphics. I won't divulge into how Decorate works because there are loads of tutorials for it online, but what I can do, is show you a cool screenshot or two:
Wow! How confusing! Basically, this Decorate script creates a new class called ZombieClone and assigns it to an id number 3004. 3004 is the id number for the standard ZombieMan, meaning this new entity will replace the ZombieMan. This is evident in the screenshot because all built in classes contain no state information and just constantly loop through their animations without a care in the world, as you can see the ShotgunGuy on the right, behind dead doom dude is looping through all frames whereas the two ZombieClones are looping through the frames of their Spawn, or "idle" state. Cool right? Also, the code above that's kinda mustard color, like A_Look, and A_blahblahblah, those are all script calls, like, GM script calls. For example, in the Spawn state, every time the ZombieClone changes frames from A to B or B to A, it performs the scrips A_Look, using the arguments that you provide in parenthesis. You can use as many arguments as you like, don't want to use arguments? That's cool, just don't add the parenthesis. I have tested that this works by adding a simple show_debug_message into the A_Look script that displays text when the player is close to the entity. So, yay! This stuff works. What else is there?
Localization:
This one is has big implications. Yous wanna be the kinds a folks what done let your games be plaid by all kinds of folks right? Somes of them folks don't speak your language so good, so we got to localize your smizmar to reflect properly in their brain canals. Here in lies the awesomeness of Localization. In most doom source ports, this is handled internally, however there is a seldom used lump called Language. This lump contains a huge list of strings, assigned to variables. These are all categorized by language, let's look at the following example, shan't we?
Is it getting lumpy in here, or is it just me? I need to lay off the glutenous sweets. Anyways, that's an example of the Language lump. The parser is smart enough to know when a line is a comment, and therefor ignores that first line. The next entry is an important one. Inside these brackets are which languages the following vars are meant to be used for, enu meaning Us ENglish, and default meaning if you're looking for a var and can't find it in your chosen language, use the one below. Simple. After the brackets you have a bunch of vars with a bunch of text assigned to them. Cool, gravy, I tested it, it works. What else is there?
Sometimes you'll notice that a string contains a weird symbol in it, for example in our ZombieClone decorate script you'll find his obituary entry reads "$OB_ZOMBIE". The $ at the start of the string denotes that the following word is a LABEL. Labels are entries in the Language lump. The system is smart enough when parsing a decorate script, that if it finds the $ denoting a label, it will replace the following string with it's corresponding entry in the language lump under your currently chosen language. I tested that too, and it works.
That brings me to where I am right now, typing out this malarkey for the glorification of your eye holes. No, DopeFish is not dead, yes, in fact, DopeFish Lives Again.
Also, DopeFish pre-orders free, so if you like all this weird crap I just typed out, head on over to the project page and download the hell out of my promisary note on how this will eventually be usuable by you. Also, tips are cool.
Cheers!
Get DopeFish: Now Open Source!
DopeFish: Now Open Source!
Doom/Hexen Interactive Map loader for Game Maker Studio 2
More posts
- Devlog #8: Launch time!May 07, 2022
- Devlog #6: The RebirthFeb 16, 2021
- Devlog #5: TexturizorDec 21, 2019
- Devlog #4: The ThreeferDec 14, 2019
- Devlog #3: Let's SWITCH it up a bit ;)Dec 05, 2019
- Devlog #2: Opening Doors to the FutureDec 03, 2019
- Devlog #1: The IntroductionNov 30, 2019
Comments
Log in with itch.io to leave a comment.
Just checking in to say I look at how this project is doing a few times per month! Chucking in my preorder with a tip now, too :) Always looks great and you've made excellent progress.
*notices the PDF says Deimos*
Rebrand #2? O:
Deimos was the original branding of the project. Haha. I appreciate your support! Right now life is a bit messy so game dev has been a bit slow. I'm close to having a playable demo to put out into the world!
I'm sorry to hear that, life's been a bit bumpy for me lately as well. I'm stoked to see that demo sometime :D Rexx Stone looks fucking tight too!! You really deserve more eyes on your work. You're super talented and Rexx Stone is looking so beautiful!
The progress is cool.
Thank you very much! I'm pretty excited with the progress considering how little time I typically have to devote to working on this.