Andrew S's weekly Progress Topic

Continuing the discussion from Hello, Sailor! (introduction and project updates):

First, edited to add: I would love to see what other people are up to!

And okay, maybe it will be a bit more or a bit less than a week. Or I’ll post when something huge happens.

Rejigging my GitHub repositories has been huge. If you don’t have a repository, there or on BitBucket, it’s a bit help if only for reporting issues. Just being able to add tags and milestones simplified things greatly for me.

The Stale Tales Slate has numerous bugfixes and just silly random adds. I’ve written in a lot of issues that I’ve wanted to get around to forever but didn’t. Getting daily credit for writing one is huge. I’ve been able to finger a lot of annoying errors floating around, and having them there meant I look at them instead of wasting time. I even added some of the utilities I use to make things go quicker: https://github.com/andrewschultz/stale-tales-slate

Threediopolis’s bug list is CLEARED! This was a huge win for me and I even managed to tune up some puzzles. The main feature turned out to be just 5 lines of code added. https://github.com/andrewschultz/threediopolis

Dirk, my Spring Thing game based on some Laser Disc video game or other, is mostly done except for putting variety into the death scenes. https://github.com/andrewschultz/dirk

I also did testing for @Draconis and his introcomp game from last year. It’s a lot of fun so far. I have a trizbort map for my own good but don’t know if I have permission to share it & spoil stuff.

I also decided on the name for my IFComp 2015 game. (I think!)

Just having github there pushes me to do something, anything, every day, and I’m not worried if it’s big or small. It beats wasting time, and it’s fun to get used to the whole process.

2 Likes

I never did write those posts I was going to write about source control (despite having a ton of free time this week)…but at least the thought I had inspired you to get your code organized and made you productive.

And I forgot to credit you! But yeah, that was a big help. I needed some motivation to get me back on track, and I did.

Also thanks for pointing out the coding bug :smile:

I’d be interested in reading what you have to say. I admit that I framed things as “If I were to write that article, how would I write it? Or, what would I want to learn from it when written?” Then I went out and learned it myself.

No credit needed, it was just a glaring reminder that I’ve procrastinated horribly this week.

Today I ran through an old perl script that sorts good anagrams from bad. It also sorts duplicates, and I was worried my lists for Shuffling would go under 1000 total. (Names and poems.) They both stayed just above.

This wasn’t anything big, but it was something I’d wanted to do for a while, and I put it off as too complex and tedious. But I was able to print out a sheet of paper and work through Shuffling.

Roiling is a bit different as it’s got a lot more, but still, it feels good to do that cleanup with time that could have been wasted otherwise. I also added a few random texts from miscellaneous notes. And I fixed a lot of utilities (including the anagram detector) that I figured I’d never use too much when I created them 2 years ago.

I also compiled my daily notes with my program that sorts things into subjects (I need to do this more than once a month) and found a lot of neat random ideas for Roiling and Threediopolis. I added conditional text to Dirk, but I didn’t programmer-test it enough.

So it was a good week even if there was nothing profound. I think a big thing is to be able to do good stuff even when you’re not able to do big stuff.

Well, I’d hoped to get more done on Dirk, but my Stale Tales Slate utilities continue to pay off. I wish I’d taken time to go through them earlier! My Weed.pl (for weeding out) PERL script has helped me chase away a lot of potential duplicates in both games. Shuffling first, since it takes 3 seconds to run the script vs 25 for Roiling, but that’s good practice. I’m enjoying tweaking it, etc.

And the best part is, I was able to tune up a lot of false-positives that were still technically okay, but stylistically, they got a bump. I’ve been able to flag a lot of bad anagrams, and fortunately 95% are just silly typos.

I have 3000 random anagrams still flagged for Roiling, but a lot of it is pretty quick verification, where I just slap a [] on the end so my program knows it’s a duplicate pool of letters.

I want to attack, say, 100 a day before I go play a silly game or something. It would be exciting to have that finished. And if I get 2 100’s or more done in a day, bonus!

I also cleared out a list of 200 trickier notes that were dumped to my text file. Many had been implemented, but others–well, I wasn’t sure where they’d go when I wrote them, but they fit. It was a good feeling to watch the sidebar actually move when I deleted a line or two before I cut the list down to a page, then finally get rid of the trickiest ideas.

ETA: Roiling’s source is now 2.5 million bytes. No, really. Lots of that is computer generated silliness, but there’s a lot of programming in there, too. And it may go back under once I delete duplicates, but that whole mess of notes I have will push it back again.

This weekend was really productive. I managed to test an IFComp game (briefly) and also managed to refactor some code I’d meant to for a long time.

(Note: I didn’t know what refactor meant til about a year ago. It simply means, clean up and make more efficient.)

In A Roiling Original, I had one area that, for release 3, I broke 26 people-puzzles into 7 pods. 1 had 5, 1 had 1 and was the boss. But the thing was–I didn’t realize I could do that for a puzzle near the end.

This one had gotten rather bloated. You had 18(!) possible right answers, in response to random chat. Giving three moved you on. But

  1. you could respond to certain chats before they appeared.
  2. it took too long to cycle
  3. adding anything was a pain

I got the bright idea to use pods last week, and over the weekend I managed to plan things out on the bus. It all clicked last night, and I got rid of a few bugs in the process. I had a mental block where I said I couldn’t use my regular framework for certain puzzles, but of course I could. And I managed to roll up a couple test commands with it all.

This is the sort of thing that feels REALLY worthwhile in terms of making it easier for the player, and I said I’d always do it if I got the chance/time. I made it this weekend. I’m pleased with that.

Of course, the organization opened the door to me realizing that some of the descriptive text needs to be tuned up, but that’ll be fun. Organization leaves time for creativity, and creativity makes me realize I need to organize…

Also, I finally figured how to use Git PowerShell with BitBucket, which was painfully easy. So my IFComp 2015 game made some progress there.

Finally I touched up my maps with the latest version of Trizbort. @harpua’s work made it so I was able to use rounded edges to show which rooms were hubs, which rooms were start areas, and which were ending. His thanks was a bunch of minor bugs–he’s got bigger things to do, but they way I look at these small bugs from the developer’s end is

  1. I won’t have to look for them
  2. something to do when I run out of big ideas

I’m curious what you mean by pods. This is the closest thing I found but I’m not sure if this is what you are taking about. https://en.wikipedia.org/wiki/Passive_data_structure

(It redirected to that page from “plain old data”)

Nothing that complicated, actually…oops. A better term may be “pot” like there is for, say, the World Cup group draw.

https://en.wikipedia.org/wiki/2014_FIFA_World_Cup_seeding#The_draw gives an example–though in my case, only 1 team/person from each pot is used, instead of all 4.

So I wanted to break things down so I had

  • Pod #1: 4 guys with 4 letter names
  • Pod #2: 4 guys with easy 5 letter names
  • Pod #3: 4 guys with tough 5 letter names
  • Pod #4: 4 guys with easy 6 letter names
  • Pod #5: 4 guys with tough 6 letter names
  • Pod #6: 4 guys with 7-8 letter names

And I simply pulled one from each pod. So that there’s not too much random imbalance of difficulties.

I’m thinking of “pod” in terms of, say, how the NCAA tournament defines pods, where 8 teams get together and play 6 games on the first weekend. Maybe there’s a better word, but there’s not a shorter word, so I went in for it.

Your question helped me note that things could be balanced better, too, so thanks for that.

The other example of pods is better balanced

  • 7 letter words
  • 7 letter words (harder)
  • 8 letter words
  • 8 letter words (harder)
  • 9 letter words
  • 11 letter words
  • 12 letter words (actually, there’s only 1, so it’s always that–but I’m still putting it in there, for balance. And the player can skip this altogether.)

Hope that’s clearer now!

Ok, so just basically a group from which one thing is randomly drawn. I was thinking it might be programming lingo or something. Thanks!

I managed to test a few IFComp candidates but fell behind on IntroComp games. Maybe I will get them done this week–I hope to.

With all that I still have a streak of 18 days at GitHub, and they’re pretty good changes. Vetting the Shuffling Around source code has brought out a few obvious bugs–nothing game breaking, just stuff that was hard to foist on testers or “did I really do it this way 3 years ago?” and I cleaned up some more code and added some extra neat text. I’m about halfway through.

My IFComp 15 game had some contributions too. I know what the first (non-) puzzle is going to be. I also expanded my command line to work with 6L02’s compiler.

It’s a relief not to have to open Inform just to see if cosmetic changes compile. I don’t need the whole IDE. And I like having flags and shortcuts for my own games, and being able to create a semi-debug build of any game so that 1) testers can have special commands and 2) I can be sure those commands don’t crop up in release.

Basically all I do is to copy the source to a new directory and change

volume tester commands - not for release

to

volume tester commands

Then rebuild.

The GitHub streak is 25 days. I finished the Shuffling rejig and now it’s on to Roiling. 1000 lines a day is not so bad, especially since some are pretty straightforward. I’ve found a lot of stuff that’s just fun to add. I’m also glad I managed to get through all the IntroComp games.

I had to tweak my program several times for the beta build to work properly, but now it names the file “beta-(regular name).zblorb” and it’s cool it works. You can see the results at https://github.com/AndrewSchultz/dirk, where I got quite a few bug fixes done and even ground out the hard vs real settings.

It looks like I just recently went over 365 contributions for the past year at GitHub, too, which is a neat goal I wanted to hit.

Oh man. It looks like I let this slide. But fortunately my progress hasn’t.

This afternoon I finally wrote up a PERL script to track down breaking up a word or phrase into anagrams. You think I’d have done it sooner–and I did. But it was just very slow.

I figured a way to make things much faster using arrays of hashes in perl. Basically, before, I would search for if a 7-letter word could be contained by a 4-letter word. I don’t any more.

Also I make sure that I don’t check for “yay” then “boo” and then check for “boo” then “yay.”

This may be a bit late, but I’m pleased with the effort and planning and how relatively small the code is.

https://raw.githubusercontent.com/andrewschultz/stale-tales-slate/master/myan.pl

Also, I got a 46-day streak. I realized that a streak for a streak’s sake is bad news, because it can get in the way of planning bigger things. But I’ve still been able to establish some consistency, which is good.

1 Like

If it’s not too much to bump topics…I haven’t posted here for a while, but I’ve managed to contribute something to GitHub for every day since mid-November. I’m pleased with that string, and even days where I’ve contributed very little, I’ve been motivated to put in a real change the next day.

Zarf’s Python scripts (regtest.py) helped immensely with getting stable likely-final releases of 3dopolis and 4dopolis out the door (no worries obscure features had/hadn’t been tested,) and this weekend someone sent me a nice big transcript for The Problems Compound which actually got me thinking of things I need to do with the sequel.

I should make a separate post about Zarf’s tools because they really are that useful.

2 Likes

Personally, I like to read progress threads. I just wish my own progress this summer was varied enough to start a thread here, too. As it is, what little I’ve done all easily falls under the Hugo umbrella so it’s over at my Hugo blog.

1 Like

Thanks! I like to read and write them.

Well, you aren’t exactly spamming by posting a reminder here, if you want to. As far as I’m concerned, the more reminders to check up with others, the better.

I recently hit a volume-goal for my anagram games. The random anagrams I piled up from just writing down notes and plugging them into the anagram server. I really want to move on. On the way I fixed two minor features, too.

I also finally made use of the PRONOUNS command for Inform. It turned up a few bugs. I think I’ll run it again. One of the barriers I run into is that it’s hard to read my stuff over and over again even though I need to look for new stuff, and things like running a script with several commands thrown in every few moves helps.

An example might be typing SCORE every move, or INVENTORY. I have to look for stuff that’s wrong. Again, Zarf’s script helps with this, though I ran a PERL script so I could throw in the right commands at the right time on a modified test project.

I also took 2 weeks to remove some hard coding so I could run the tests for more than just one game.

https://raw.githubusercontent.com/andrewschultz/stale-tales-slate/master/Roiling/testing/reg-roi-thru-min.txt gives an example of the script.

is an example of this. #xc states where I slip in the extra command.

Hugo Labrande also sent me a wonderful script for Problems Compound and I should have release 3 out pretty soon. One of the major things I missed was that hints I thought I was giving the reader weren’t there. Also the “great” ending required visualization and assuming things that I hadn’t made clear to the player. So I got some good fixes in, and at the same time, it was nice nothing drastic broke.

FWIW, it’s unlikely I’ll ever have anything to contribute to these, but I certainly enjoy reading them. :slight_smile:

1 Like

Thanks! I’m also not looking for a huge audience, but it’s nice to have something to say when it doesn’t fit on Twitter or isn’t big enough for planet-if.

I’d also like to add that Hugo’s first language not being English resulted in some other really good questions a native speaker might not have asked.

Oh and the post-comp final puzzles… they basically require you to say (known word) (unknown word) …

So instead of

understand "xx yy" and "yy xx" as a mistake ("...[cue-hint]")
understand "xx zz" and "zz xx" as a mistake ("...[cue-hint]")

I was able to throw everything into a table. Which simplified a bunch of things and will let me add good tries more easily in the future. I do appreciate the understand “x” code, but it’s neat to be able to do a bit better if/when I need to.

Here is the link to the code cleanup where I moved thing to “after reading a command.”

So it’s been less than a week, and I’ll probably have a post-Labor Day topic up, but I learned a ton last night with a project I always meant to do. I’ve been trying to learn python, but I’ve been interested to find how and why “I NEED TO LEARN X” doesn’t work. Hands-on approaches work better, and I finally found a good project that went beyond modifying Zarf’s scripts and copying the syntax there to actually making my own and learning new syntax.

Years ago I wrote a walkthrough for one version of sokoban. Then I wrote for another–and I noticed some levels in game 2 were rotations and/or mirror images of game 1. I sort of forced things by saying

$newdir{"R"} = "U";
$newdir{"L"} = "D";
$newdir{"U"} = "R";
$newdir{"D"} = "L";

Or whatever. Which I could change as needed. The point is to change 2R 2U 2D 2L, say, to 2U 2R 2L 2D.

So I finally wrote something that could read in a file and also the rotations from the command line and change them. I did it in PERL. It’s actually not too bad. There are only eight possibilities. (My college group theory class finally came in handy!)

Then I did it in Python. The funny thing is, I’m sick of Sokoban, but this was still a useful project. It was probably more fun and productive than playing Sokoban. And probably not as brain-melting as the very tough levels.

It was cool to have an idea fall into my lap today. In A Roiling Original, each major section (not including the intro or director’s cut) had a hint item. Except for the denouement. The basic idea is that after you defeat the bad guy, there’s a themed area not intended to be hard, but it’s fun.

Having a hint item was sort of a pipe dream, but I stumbled on a good name for it, while playing a word game online. The adjective is a bit odd but it’s augural arugula. And best of all it makes that sector’s max score 42.

The only problem now is making sure the hint command doesn’t get anything weird.

I also planned another “one last specific puzzle cleanup this time: no, really!” The game throws out minorly different enemies if you are male or female. The solutions are still the same, but I thought it would be a neat thing t put in. One puzzle I’d improved twice but still would’ve liked to do a bit more…well, the penny dropped and now I can clue a guardian several different ways.

But it is one of those things where I know there’ll be a lot of bugs. So, yeah, I’m grateful for source control before I start.

1 Like