Cooking a Weird Thing

Hello. As many who know me are aware, I like cooking weird or very simple things. Examples include: a 3 ingredient cookie, a no bake lemon pie, and Ramen Lasagna (A group favorite in my D&D group). So, when my dad sent me a video with an odd recipe, and I realized I had all the ingredients for it, I HAD to try it! The first attempt… did not go well. But I realized what I did wrong and tried again. Here are those two experiences.

But First, The Recipe

Before I get into what I did, both good and bad, what is this recipe I am trying? Well, I don’t have a written version I can just put here. That’s because what I was given was a video of a woman making this thing. So I will describe what was presented to me.

Step 1 was simple: Stab a hot dog with a bunch of pasta in a line. When done the pasta should look like a fence sticking out of the hot dog with a bunch of small gaps.

Step 2 is predictable: Boil the pasta and hot dog. Not much to say about this now… but I will get back to this.

Step 3 is where things get fun: Lay out the hot dog and pasta then apply tomato sauce onto the pasta. Then apply cheese, the video appears to use shredded parmesan.

Step 4: Roll up the hot dog in the pasta with the sauce and cheese on the inside. Then wrap a tortilla around the hot dog like a burrito.

Step 5: Fry the burrito on each side until crispy. And finally enjoy.

The First Attempt

For my first attempt I only used things we already had around the house. This meant a few ingredients were a bit… off. Starting with my hot dog, my family does not buy “Stadium sized” hot dogs, we buy polish sausages and use them as hot dogs. So I am starting with something oversized for the recipe. For my pasta, what I had easily available was Angle Hair pasta… so now I have an over sized and an undersized item. Great.

Before anything else I heat up my hot dog in the microwave. While the boiling might cook it, I won’t be moving it in the water, so I don’t want to rely on that alone. Next I begin stabbing my hot dog with the pasta and I notice two things. Fist is that it is taking A LOT of pasta to get across this hot dog (see oversized hot dog and undersized pasta). Second is that my hot dog is too large for my tortilla. Solution? Don’t use the entire hot dog. I stop placing pasta about an inch short of the end and move the entire thing to a pan with water and begin heating it.

This is also where I remembered I was going to take pictures of the process. And where I made my first real mistake. I set the stove to high and walked away as it began to heat up. After losing track of time I rushed back into the kitchen and saw the pasta waving in the boiling water. Having not made very much pasta, I believed it was done… I was very wrong. After putting the hot dog and pasta on a cutting board, the pasta quickly dried out, hardened, and snapped at the hot dog base. Leaving me with a perforated hot dog and undercooked pasta.

Thankfully, this undercooked pasta was easily resolved by simply boiling it more. But, I now could not roll the pasta and hot dog into a nice roll up with the sauce and cheese inside. So I applied the sauce and cheese to the tortilla instead. Then placed the hot dog with the pasta loosely around it into the tortilla and wrapped it all up.

Now to the frying. I drained the water from my pan, put down some vegetable oil and started cooking it. And the tortilla being too small comes back up here. As you can see in the photo it started unwrapping.

With everything else going wrong and this a the end I started treating it more like a quesadilla than a burrito. I got it crisp “enough” and but my losses before everything started spilling out.

Initial Thoughts

After my cavalcade of mess ups, how was the finished product? Interesting. Not like anything else I have had before and good enough for me to try again. But with a few thought out changes this time.

Firstly, a different pasta. Something with more volume. Secondly, bigger tortilla, so I could use the entire hot dog and get a good wrap around it.

For the cooking process… Well I will get to that.

The Second Attempt

Today I tried again and I won’t be going into as much detail as I did before, except where things are different.

So, this time I started boiling the water as I was stabbing the hot dog with spaghetti. I also set a timer for how long the spaghetti was supposed to take to be done. This solved most of my initial problems.

The spaghetti did not need nearly as much to get across the hot dog. Boiling before placing meant I didn’t have as much of a chance to get distracted. And the timer meant I wouldn’t pull it out so early this time… more on that in a bit.

With the spaghetti cooked, removed, and not broken, I got to apply the sauce and cheese as was intended. Then I rolled it up and put it in the, much larger, torotilla.

Frying up the tortilla went super easy this time. The tortilla only tried to fall apart once and was easily fixed.

The finished product looked good and tasted fairly good… with one small problem.

Final Thoughts

I have been alluding to one problem with today’s attempt. So enough beating around the bush: what was it? I didn’t boil the spaghetti long enough. The timer was set for the 10 minutes the box suggested, but took it out with 2 minutes on the timer. I figured this was much less than the box expected to be cooked in a way that should cook it a little faster. But I was wrong.

Turns out I got the spaghetti to about the point of Al Dente… Maybe? At least as I understand it. Which is to say, the core of the pasta was a bit hard. This put a bit of a damper on the final taste. But I still enjoyed the final product.

So, what would I do differently if I did this again? Simple: Skip the pasta. I would make a burrito with a hot dog (polish sausage) as it’s core. This will make cooking it simpler and let me add more flavors more easily.

This was an enjoyable experiment that led me to a final recipe I will likely enjoy several times in the future.

The Finish Line

This post is a little late but…

I FINISHED MY GAME!!! The Game is done and Published on the Google Play Store. I actually published my game a few months ago, just before the New Year, but life kept happening and I didn’t think to make this update here.

The last steps of publishing were simultaneously more and less frustrating than I thought they would be. It was more frustrating because the interface Google provided didn’t do a good job of explaining some of the steps I needed to do. Example: It would tell me I did something wrong in one section of disclosures. But not tell me what I did wrong or what I should have done. Thankfully this was fixed by simple searches online to find the steps I needed to take.

Paradoxically the ease of some of the steps made me uneasy. I kept expecting something to go wrong. Something to become a brick wall. For the other shoe to drop. And it never did. The stress and relief cycle was a roller coaster that left me exhausted some days. And all of that is not to mention my programmer/IT instincts screaming that if “everything just works” that I have overlooked something critical.

But all of that is done now. So, what’s next? Right now I am doing some personal work so I don’t think I will be doing much on Sky Lights for a while. I might try to eventually get it on to the Apple App Store but I will see how that goes. As for my posts here, I will try and post more regularly. But the subject matter is going to be all over the place. We will just have to wait and see what I write about.

The Last Hoops

So, I am at the finish line for getting my first game available to the public. There shouldn’t have been any last minute hoops for me to jump through. But… of course… as I have learned, there are always more hoops to jump through. Here is a recounting of the last (crossing my fingers, knocking on wood, and throwing salt over my shoulder) hoop I had to jump through for this process. That way, if someone else encounters this hopefully they will find my recounting helpful.

What Happened?

I finally made my 1.0 build to upload and push my store listing to live. I uploaded the build, sent it for review… and got an error. The Google Play Console was telling me that it detected my app as collecting a type of data and I had told them my app didn’t collect data. I had only limited knowledge of what this could be.

My app has an In App Purchase (IAP) so that had to be it. But I had no idea of what, within the context of their system, they were looking for me to declare. And the automated system was no help whatsoever in identifying what I needed to declare.

What Did I Do?

Eventually I found a “submit for review anyway” option, letting me know I was bouncing off the basic automatic check system. (More specifically it was under the “If you think this judgment was made in error” section all the way at the bottom) So I did that, knowing one of two things would happen. Either it would go through or I would hopefully get a more helpful bit of feedback.

And I did get a more helpful bit of feedback. Apparently the data I used fell under the “Device Or Other IDs” description. My usage should be ephemeral (meaning stored only long enough to use it) and upon telling this to Google’s form I was able to submit for review without bouncing off or getting a quick rejection. Then, after a day of review, it was accepted. And I was able to go live.

Updates, Mistakes, and Rewinding

Hello, it’s been a while since I posted here. Sorry about that. So, what have I been up to? To sum things up: My game is in closed testing for an eventual Google Play Store release! Just need a few more testers and a little bit of time (plus one or two very minor updates) and I will have a game I made by myself available for sale. I am both excited and terrified at the same time.

However, not everything has been an easy path here. And I have a recent tale of one such bump in the road to tell.

What Happened

While I was in the process of moving my game through the testing phases, Google sent out a notification: “Your game’s billing library must be updated to version 7.0.0 or higher by X date”.

My thoughts were simple “This shouldn’t be difficult. Probably just a simple update and I’m done.” And it should have been, but I am getting ahead of myself.

What Went Wrong

Everything was going smoothly. Opened the project, found where I needed to do the update. Finished the update… and got errors that I needed to update my code…

Turns out I updated from the In App Purchasing (IAP) version 4 to 5, which came with a change in how it is coded. All of my IAP code was suddenly worthless. Arguably worse than useless as it was in the way of whatever the new way of doing things was.

Upon realizing all this I tried to learn how to use the new version… and go so frustrated I yelled at the top of my voice and started to get a headache. And all of this was just being exacerbated by a deadline.

What Did I do

In short: I panicked. And I don’t operate well when I panic. I ran away from the problem and worked on other things. But eventually, I needed to get back to it. And after a pep talk with my dad I did.

But I decided to try and play it smart this time. I realized that Google just wanted the Billing Library updated, not the IAP version. So I started searching around about that. Maybe I would be able to return to the version where my coding still worked. It was worth a shot at least. And it turned out I was right! There was a version of IAP 4 that supported Billing Library 7. Now I just needed to figure out if I could rewind the update I did.

Looking it up online I found a method that I won’t bore you with, but involved a few preliminary steps such as backing up the project… just in case. That done, there were a few more steps I was “supposed” to follow. But I impulsively decided to just delete IAP version 5. I then realized I might be able to reinstall the older version 4, and sure enough I could! So I did that, checked a part of the code to make sure things looked good. And made a new build for Google.

Last Few Things

So I uploaded the new build to Google, and everything looked like it was going fine. Until two days latter when google told me I needed to update to billing library 7 again. But this problem was much easier to solve. I realized my Internal Testing version had not been updated in a long time. So updating that to the latest build and the next day Google told me I was in the clear.

One final word is to thank two creators who’s videos helped me in this endeavor:
YTCodeMaster who’s short pointed me in the right direction. Short
And New Popular Games who’s video showed me what version I was looking for and how to check that it all worked out. Video

Dealing With Loss

Recently, a friend of mine passed away. Within that friend group, if you had asked any of us who would likely die first everyone would have said him (even him). But even so, it still came as a shock. Just out of nowhere, someone I saw almost weekly is just gone. Forever. The remainder of the group got together for our normal weekly gathering and had a remembrance for him. But I was struck by the difference in how I reacted to the news compared to everyone else. So I thought I would write about that.

Not The First Time

This is not the first time I have lost someone close to me. Over the years I have lost all of my grandparents, some of them rather suddenly. But… I didn’t feel the lose very strongly. Part of me knew, they were gone, I would never see them again, and I should be sad. But I didn’t cry, I wasn’t sad, I just carried on with life. I don’t know why that is how I reacted, but it is. Did I disassociate from the problem? Maybe. That is how I would describe how I felt at the time.

In addition to losing grandparents I have also lost several pets. The first was my dog. We got her when she was just a puppy and I was still in early grade school. I grew up with that dog. And then, one day, just before we were set to go on vacation for a weekend, something happened. We were in the garage and she yelped in pain. When we got to her seconds latter, her back legs no longer worked. As best we can tell our 13+ year old dog had a stroke or aneurism or something that lost her the ability to move her back legs. One stay at the Vet latter and a confirmation that she would not get better… and we had her put to sleep.

I do not remember much around this time, I remember choosing not to go back and watch her going to sleep for the last time. I am told I cried over the loss. Typing this out I can feel the tears threatening to come out, so I believe it. All this to say, I know I can be affected by loss, but for some reason I am not a lot of the time.

This Time

This time, it was just a normal day. Was in the middle of something when I got a call from a number I didn’t recognize. But when I finished up and looked again I realized who the call was from and called them back. Upon getting the news of our friend’s death my immediate response was a short stunned silence, then a “Oh. FUCK.”

I was sent reeling for a little bit, but then my mind shifted a bit. Rather than the grief one might expect, my mind started going over how schedules might change. What to do with certain character interactions in our ongoing game. Just all these analytical angles of the situation. Honestly it got to the point where I was starting to wonder if something was wrong with me.

Then we had our remembrance gathering. Most of the other people were very emotional or had emotional stories of hearing the news. And I just… didn’t. Guess I was the rock. For a while I wondered if something was wrong with my response. But writing all this out has helped me get through some things. And how much I got choked up upon starting this… Nothing “wrong” with me. I just process my grief in an atypical way.

Creating Dungeons Revisted

So, back here again. With my campaign having started I figured I would write about making dungeons. Firstly for my own benefit in getting my thoughts straight. Secondly because other people might find it useful or interesting. And thirdly because I now have actually made a full dungeon rather than the simple one shot “dungeons” I made previously.

Step 1: Theme

The first step in making a dungeon (or adventure) is to figure out a theme. Taking my first dungeon for example, I actually started by designing an encounter. The encounter was based on the idea of constructs that blended into the environment (living statues, animated items, etc.). When I started expanding the idea into a full dungeon I needed a unifying theme. At first I went with “constructs” but there simply were not enough constructs (of an appropriate difficulty) to populate the dungeon. So I got creative, and re-flavored some things into constructs. But that only took me so far.

I needed a theme change. And then it hit me: Museum. The constructs make sense there as displays and guards both. And it opened me up to a few other things I could use. Now I had some elementals rooming a laboratory that some archeologists… found, and brought back. A few sentient constructs were hard to justify, until they were trapped in the museum by some unseen curator.

Step 2: Populating the Dungeon

As you might have surmised, these steps are not as sequential as I would like. But the idea still stands. After you know what your dungeon is about, you need things to go in it. The first part of this step is figuring out the encounters the players will face. In my case the flow of the dungeon would go something like this:
1. An initial encounter upon entering the museum.
2. Learning they need a pair of keys to open a large door.
3. Going on one of two branching paths. With at least one encounter along the way.
4. Puzzle to get the key. (With possible combat encounter if they “cheat” the puzzle)
5. Repeat for other side.
6. Final encounter in the treasure room.

So I needed an initial encounter (already made). Two encounters for each branch (four in total). An encounter for “cheating” on the puzzle (repeatable between the two puzzles). And a final encounter (also already made).

How I did it

And I got to work. The three of the four branch encounters where fairly simple, with the final one taking the longest to figure out. The “punishment” encounter was tricky, but a small reskin of an existing monster got me where I wanted to be. And we were almost done. Until I had one more idea.

Even with two puzzles this dungeon felt a little combat heavy, so I added a non-combat encounter. It is a creature from non-official sources that I just love the idea of: the “treasure weasel”. It presents itself as an unsolvable problem with the promise of treasure at the end. This way the adventures will keep trying to get the loot, but get more frustrated as time goes on. And that is the point, in lore these creatures feed on frustration. But once sated, these creatures also gladly give up the treasure they are guarding. Putting this back in the main hall, that they have to pass through several times, makes it unavoidable. And I have all the encounters for my dungeon.

Step 3: Set Dressing

This is the step I am still worst at. I need a description for each room and the kinds of things they find in there. So far I have gotten away with improv skills of “making it up as I go along”, but I need to think this stuff out more in the future. Some of the descriptions I have given were:
“Impossibly swirling marble walls, as if the marble was sculpted from clay”
“Benches made of copper”
“A stone slab bench made from an impossible fusion of obsidian and ivory”
And “Giant stone doors designed to rise into the ceiling”
So I think I am doing alright in the improv department… but I would rather not rely on it too much if I can avoid it.

Player Backstories as the DM

Recently my Dungeons and Dragons group had a “Session Zero” for my upcoming campaign. We set some ground rules for the game (off limits topics, basic play loop, house rules) and started character creation. And with characters come backstories. Backstories that I have to read, approve, and figure out how they fit into the world we are all crafting.

Step1: Compiling Stories

So, of course, the first step in this process is for my players to come up with stories for their characters. But that does not mean I am totally uninvolved. As players begin crafting their stories they sometimes run the drafts past me. And as I read them I give suggestions on how to mold them. On rare occasion I have to tell my players no, but usually I try to use improv rules when making my suggestions. Not a hard no, but a “have you considered…?” or a “What if we tried it like this?”

On the one occasion I needed to squash a player’s story I did try to salvage as much of it as I could. But the player had a case of what I call “main character syndrome”. This is where their story is so big and bombastic, so large and important, that it overshadows everything else. And like the main character in most stories, the entire story becomes about resolving their conflict.

As I said, I tried to salvage important bits and pieces of their idea. Introduce elements of uncertainty so that I could play with a few things behind the scene, but ultimately that idea was scrapped. When they came back with a second idea, I at first balked at the mechanics their story implied, but then shared a similar (but simpler) story I had used in the past and they loved it. And so they still get to be the main character of their story, but not of the story.

Step 2: How do These Fit Together?

The next thing I asked my players to do, once they had their backstories decided, was to establish at least one positive connection with another player character. This way these characters are not complete strangers when they first meet, at least some of them know each other.

My work on this step is seeing how any extra characters from my player’s backstories can fit into the world I have made. Most don’t need an immediate answer but a few are going to be in the main community and so I need to figure out how to integrate them.

Step 3: Figure Out What Threads I Can Pull

Once I have all the backstories (or even just backstory elements that aren’t going to change) I begin figuring out how to weave them into stories. I have been running one shots within the setting and have been dropping hints for at least one (and a half now) character’s backstories. Another character has an easy way to introduce character elements (I just have to decide what they mean).

What I am saying is that Step 3 is where I get to have fun figuring out how to torture my players with the tools they gave me. And how to reward them for making good stories.

The Advice to “Kill Your Darlings”

“Kill your darlings” is a bit of writing advice heard rather often in writing. In short it means to be willing to destroy elements of your have worked hard to create. To be willing to discard even your most cherished creations. This does not mean that you will get rid of those elements, but you must be willing to do so. This is because otherwise we can be blind to the problems that our “darlings” create in relation to the whole project.

So, why do I bring this up? Simple. “Kill your darlings” applies to much more than writing.

Programming Darlings

Early on in my project I created the randomized levels. With that I of course created the controls. A drop down window for difficulty and simple “New Level” button. But I also added a “Custom” difficulty that allowed the player to input their own target number. This, the “Custom” setting, was my “darling”. It has stuck around for far longer than it should have. I have for quite some time that the dropdown menu would need to be changed. But doing that would necessitate a significant rework of the “custom” setting, and so I put it off.

But eventually, I recognized that the “custom” difficulty setting had outlived its usefulness. And so, I removed it. And in doing so, removed the last thing holding me back from removing the dropdown menu and converting it into a spinner design.

In any creative endeavor, from writing to programming, to painting, and beyond, one must be willing to remove our favorite parts of a project. All in service of making a greater whole.

Baldur’s Gate 3 Controversy

Around a month ago Baldur’s Gate 3 got its full release. Before that it had been in “early access” for a few years. With its full release a few things have cropped up around the game. Most of those things are comparisons to the rest of the so called AAA games industry. The main thing being said is that Baldur’s Gate 3 is, or should be, the new standard that AAA games are held to… and a bit of backlash against that idea.

So lets talk about what is being said, and what I think is actually being expected.

What is Being Said

So, as I said the feedback from consumers can more or less be summed up as “Baldur’s Gate 3 should be the new industry standard”. This has garnered some backlash from more established gaming companies. They complain that making a game of the length, complexity, and polish seen in Baldur’s Gate 3 is near impossible. And I can kind of see where they are coming from.

Baldur’s Gate 3 is the type of game that can take 100+ hours for a single play through, with lots and LOTS of potential for re-playability. From character customization, to multiple ways of handling situations, to full on branching story lines. It is obvious a lot of work went into this game. And all that work is a bit of a risk. A game of this length and complexity is easy to get wrong. And so, publicly traded, risk adverse companies can’t/don’t want to take that risk.

What was Actually Meant

Having said all that, there is a disconnect between what is being discussed and what was meant originally. I believe that what was actually meant by “Baldur’s Gate 3 should be the new industry standard” is not its length, complexity, or even polish. What was meant was the state the game launched in. On launch the game worked. Were there bugs? Of course there were bugs, in a game this big they are unavoidable. But they are being addressed at an astoundingly rapid pace. So what was it that was so good about Baldur’s Gate 3?

A few things. First and foremost, assuming your computer could run it, it simply worked. Few if any game breaking or ruining bugs/crashes. No major graphical glitches. A few performance issues in the late game, but those have/are being addressed in patches. This can not be said of all (or even most) AAA games now. SO many come out in terrible states that are borderline unplayable (if not outright unplayable due to things like crashing).

Secondly, Baldur’s Gate 3 is a complete game on release. No on release story DLC. No pay to progress faster mechanics. Not even a cash shop of any kind, not even for cosmetics. Many so called AAA games now a days try and nickle and dime their players via micro transactions (some of which are not so “micro”). I do not care if a company charges for cosmetic items that do not affect gameplay. But I do care if a company holds game play elements hostage behind a pay wall, when I have already purchased the game. The only way Baldur’s Gate 3 does this is an optional “Premium Edition” that includes a few cosmetic items. And it is not pushed or even available in game.

Smoke and Mirrors

But this disconnect between what was meant and what is being discussed is intentional. The games industry is desperately afraid of being called on their BS. They insist that things are the way they are because they need to be. But then Baldur’s Gate 3 comes along and disproves that notion. So the big names in the games industry need to reframe the narrative. Rather than the reasonable things that were meant, they framed the discussion as “unreasonable consumers wanting the sun and moon”. When really we just want finished games that work on launch and not to be charged extra for a good experience.

Final Preperations

The Dungeons and Dragons campaign I am in is about to come to a close. 2-4 more weeks of games for this campaign (DM says 1-2 but when do things go as the DM plans?). Then it will be my turn. My campaign should officially begin in less than a month. What do I have left to do?

Session Zero Prep

There are a few last things for me to put together for the session zero that will kick off my stint as DM. First is a questionnaire. The questionnaire will be about what topics the players are comfortable encountering. These will range from slap stick comedy, to romance plots, to much darker topics. I don’t have plans to use most if any of the things going onto the questionnaire, but it is much better to know where the lines are well ahead of time.

The next step of session zero is to help my players make their characters. This step has already begun. Some of my players are throwing character ideas and backstories at me so we can work on them.

Populating the World

I know where my players are going and what they are doing, but I have a sparse few NPCs for them to interact with. I have the main quest giver, his wife, an idea for a pudgy shop keep, and a fun bar keep. But I don’t have much else. So I am going to have to make more characters.

And of course, I am going to have to design some dungeons and other encounters for my players. I have a few early encounters for my players, but I need to flesh out the layout of the actual dungeons.

Presentation

Finally, we come to how we are going to play the game. I have a play mat that can be drawn on… but it takes some work to erase a given map to make a new one. So, I am reconsidering the idea of using Roll20 to run my game. The main problem being getting maps. But that is a relatively easy to solve problem. Even if I have to make the grid maps myself.