Andrew S's weekly Progress Topic

I forgot IntroComp ended this weekend. But since it did, I figured it was worth it to write a postmortem for Grubbyville, my IntroComp game. Thanks to @harpua and @vlaviano for their time and ideas helping me place!

Still banging through an IFComp candidate. I might not make the cut. I took a detour to rejig a puzzle in A Roiling Original. It was something I sort of forced to make sense but it feels smoother now.

I had to grep a lot of auxiliary and text files to make things consistent, and while it was some busy work, Iā€™m confident I fixed the main stuff. I even uncovered a small bug from when I rotated the names of 5 rooms. Itā€™s wonderful how the simplest parts of grep can go a long way.

Iā€™m still trying to do one small but significant GitHub change per day. Iā€™m 7 weeks away from one per day per year.

Under a month to go with my GItHub goal, with at least a daily code upload.

Iā€™ve been working on a Spring Thing project. A sequel to my IFComp game. Itā€™s kept worrying about reviews on the back shelf. Iā€™ve been trading ideas with someone else who wants to enter in Spring Thing. And that goes to my private BitBucket account, where Iā€™ve been trying to make a daily change too.

But one thing Iā€™ve been happy with is that Iā€™ve used FreeCell as a way to learn new programming languages. I already sort of knew python, but writing a full game in the language helped me learn.

Then I wrote a stripped down version in Ruby and planned one out in Go . With each language I learn I realize that new languages have to make at least as much sense as the previous ones. And the basic building blocks can and should be easy to learn.

Python and Ruby.

11 days til my GitHub goal.

The ideas are still dripping in for Problems Compound, which I should probably release already. I have a big file full of ideas Iā€™ve never used, as if I were waiting for a big moment. But this week I cleared a lot of sections. Maybe not the big ones, but enough to show that the organization worked and I got a lot done.

One thing that keeps slipping away is updates for Slicker City. Someone contacted me on Twitter about an alternate solution for the second-final puzzle, and I realized I hadnā€™t properly tested some other small fixes.

Also I managed to implement a lot of shortcuts into my Python FreeCell game, including one that lets the game spew moves when youā€™re close to winning. One of them currently caused a hang, but I have the debug tools in place to fix that.

1 Like

4 days. Despite the distraction of the election, I got stuff done. In fact, with it over, I chipped away at a lot of weird tools. I guess I had been building up stuff to put off.

The final Slicker City updates got in, and I wrote tests for them, which Iā€™d like to have done in September. I see I could have, and it would not have been that hard, and Iā€™ve jumped ahead to the next game in terms of implementing skeleton puzzles while ignoring the

I had a tangle with changing the name of a commit for my private SC repository. I labeled a commit as ā€œadd file Xā€ when I didnā€™t notice Iā€™d only modified file Y. And somehow I messed up deleting the last few pushes and merged, and I went down a whole rabbit hole about learning about git.

I learned why itā€™s so hard to do (altering history in a project is a bad idea because usually it affects other people, and GIT makes you check a few boxes so othersā€™ history isnā€™t corrupt) as well as a few other things. I have a big long cheat sheet of commands I use regularly with whys and hows, and it helps. I know I spent a lot of time worrying ā€œHow to learn source controlā€ when really I just needed to get started with a project and go with it.

Iā€™m going to need to merge my post-comp branch this week. There may not be a lot to merge, but the point is to step through and get the basics done. Somehow, just posting that sort of thing here helps me go through with things.

So Iā€™m at a year in a row of commits for GitHub. Some people here already likeā€™d my tweet (thanks!) and, well, a bunch of other people did & it felt cool. And Iā€™ve kept the streak going. Iā€™d like to write a blog post or something about it, the ups and downs, the days I made a cheap silly contribution, and the days I held back just for the streakā€™s sake so Iā€™d be sure of something to do tomorrow. I learned a lot from it all. I think the goal helped me waste less time, period.

I found some bug cases for FreeCell python and in fact the codeacademy site has helped fill in some beginner stuff I ignored for this project so thatā€™s productive. One thing Iā€™m pleased with is that I have a ā€œpā€ command which stands for plow through the remaining board, or ā€œp2ā€ plows through row/column 2. So in other words I waste less time per game but thatā€™s no assurance Iā€™ll waste time overall

Since Iā€™m running out of features to add, so I think this project can be wrapped up.

With codeacademy, Iā€™ve learned a lot about javascript, and jquery is now ā€œOh neat thatā€™s what it doesā€ instead of ā€œsomething powerful and important I donā€™t know if I should be scared of.ā€

I wrote a PERL script to act like a Windows cron job in conjunction with the task schedulerā€“it runs every half hour. Itā€™s handy as I often dump websites I want to check once a dayā€“and I donā€™t have to use the brainpower to REMEMBER them. Itā€™s in my miscellaneous github repository, and itā€™s already helped. For instance I check chessgames.com for quizzes once a day at 11:03 PM with the line

23|DEF http://www.chessgames.com

(It changes midnight Eastern, Iā€™m Central, I put in a few minutesā€™ buffer just in case)

Or I run daily builds of my text adventures with

7h|c:\writing\dict\nitely.pl -a

(7:30)

I also have a pile of writing notes I need to clean up (eg small ideas to add to various games) and thatā€™s sort of a constant problem.

Non programming but still tech-y: I never got around to watching Star Trek as a kid & Iā€™m on season 3 now and will be done soon. So thatā€™s been taking up my time but itā€™s been neat to see ā€œOh thatā€™s where (word X/idea X I remember) came from!ā€

Like I didnā€™t know Tā€™Pau (rock group) was named after a character, or Redjac from the Apple II game Taxman (Pac-Man clone) was named after a cosmic ghost-thing. So thatā€™s been fun and amusing.

2 Likes

A year of commits is always impressive!

Thanks! It was well worth it.

I finished Star Trek but also finished some other stuff. A lot more FreeCell fixes and I even tweaked my PERL script to customize a lot. Itā€™s great not to have to remember stuff, and even the command line box popping up reminds me I may have other stuff I want to do.

For my spring thing game I fixed a bug in a semi-complex puzzle. I donā€™t want to spoil it, but it was a parity problem, and the board layout wasnā€™t always solvable. I had a sense I was thinking of stuff wrong, and just after midnight I figured the right way to do things. I was about to ask on http://math.stackexchange.com until I figured what to do, and the code cleaned up a lot.

I stayed up a few more hours because that kind of freed my mind for more mundane stuff game coding I needed to do anyway.

I also realized how to replace the final puzzle in A Roiling Original. It was PULL LEVER before but now I have an appropriate verb. This after someone reminded me how I meant to change the dial in Shuffling Around to a lid, so it canā€™t be budged afterwards. (Howā€™d I miss that for so long?)

I finally wrote that PERL script to shuffle IDā€™s in Trizbort. Itā€™s crude, and it is hard coded to one of my own maps, but it doesnā€™t corrupt the data. So that was a project I always wanted to check off on. Iā€™d still like to sort the IDā€™s by number, but thatā€™s the next step

I reorganized my new anagram sorter script. I donā€™t need any new ones, but it was neat to be able to label stuff

"anagram"x
"anagram"d
"anagram"u

And send them to separate sections to add to the code whenever.

A transcript for my Spring Thing game also netted some obvious changes, and I figured how to extend a puzzle and make a silly last lousy point. Itā€™s good to have a head start, and the map finally feels stable. Iā€™m finally committing regularly to Bitbucket even though it doesnā€™t track things immediately like Github does.

Oops, forgot my update this week.

I got sidetracked with learning other languages, but testing another game shook out some simple things for me. In Slicker City, I realized

A Rate Coop could be a Groove Stone, which more effectively blocks you and is easier to slip a paper into.

I also wrote up some general metrics for my idea files. They track how many ideas are left each day. If an idea is commented out, it doesnā€™t count. So my nightly build counts up whatā€™s left. Itā€™s effective as a nudge to say, ok, do something today. Iā€™d like to add a target date that says, ok, I need to look through X ideas per day to clear it all out by April 1 or whenever.

One puzzle I completed in my Spring Thing game opened up some questions about PERL/Python I forgot I had. Thereā€™s a lot of stuff I do automatically and finally I was able to question that and see the real reasons why you do things a certain way.

1 Like

I got all sorts of utilities done but the biggest thing mayā€™ve been rearranging 300 objects from my Spring Thing game to a table. Objects take up a lot of memory and disk space, and the thing is, they were person names. Once I rearranged I saved 170k disk space and 200 memory, which also allows me to write in new code lines easier going forward.

I had to do a lot of hard code I wrote 6 months ago when I considered this solution but dismissed it as too simple, but at the end, I figured a few ways to tweak puzzles with the new organization. So it was a big win.

This week I managed to invoke a daily script which shows my progress in whittling down ideas. I just comment them out for later and I can kick the commented ideas to the end of a long list. Iā€™m on pace to look through all my ideas by March 1st.

I also planned to ask a bunch of questions at stackoverflow to get my rep over 100, but itā€™s stalled at 88. Whenever I research beforehand, Iā€™m able to work out what to do.

Hashes really can do everything in PERL.

My before year end goal is to have a look at COBOL, LISP and FORTRAN and understand the basic language. New Year resolutions can be sticky but fitting in one or two things before the new year usually works for me.

My RPG tools repo (specifically my map converter) has been getting a lot of small fixes. Itā€™s amazing how much having source control helps me nail down, try out, and test ideas rigorously. The one cute thing I always wanted to do was to be able to generate LCD-style number icons, and when I wrote it down while working out, well, there it was.

Iā€™m also working on testing a non-text adventure. I donā€™t know if I can publicize it, but itā€™s helped me tweak the ā€œmapconvā€ app and try new things I always meant to. I only wish I could find more 8-bit RPGs to write maps for. I donā€™t know of any that need them, so any help is appreciated.

I had a nice breakthrough for my Spring Thing game, where I managed to look through all my basic ideas. I figured the names of the towns/areas. I only had one before and it felt a bit awkward, but it was a good stater idea. One of the final towns still may not be 100% right but itā€™s a lot better. This is what starting earlier and regularly thinking about something can do. I also implemented the final puzzle even though Iā€™m not sure how to get there yet.

I took a look at the repository, but Iā€™m unclear on what the map converter does. What does it do and how does it work?

Oops. The readme files werenā€™t up to scratch.

The basic idea is that mapcpy reads data from a binary file and dumps it onto a bmp. for instance if there are 400 bytes that specify a 20x20 town, you can specify h=20, w=20, etc.

Then once mapcpy is run, mapconv reads in the BMP file created and links it with an icon file. For instance, if the created bitmap file reads (with each 256-row)

01 01 01 01 01 ā€¦
00 00 01 00 00 ā€¦
00 00 01 00 00 ā€¦
00 00 01 00 00 ā€¦
01 01 01 01 01 ā€¦

and the nmr files says 0,0,4,4, and 0x01 is defined as a red block and 0x00 as black in the icons file, youā€™d get a red I.

I probably need a more visual example of this, but your question started me going, so thanks for that.

You had mentioned the trouble of finding 8-bit games to test the system on, which got me wondering if your system could be applied to tile-based systems like games created with the Adventure Creation Kit (despite not being 8-bit). Looking at it closer myself, I imagine itā€™s both out of your programā€™s scope and that ACKā€™s map editor already provides the a similar functionality.

Iā€™ll be curious to hear about other games that meet your requirements, though!

2 Likes

OMGā€¦I had no clue there was a modern working version of ACSā€¦And it works on Mac!!!

I have long said I would love to mess around with this!!

1 Like

I didnā€™t realize it had taken so long for my next post. But after organizing MAPCPY a bit more (basically writing files to convert several old games), I realized Iā€™d missed a few, so I may write a few maps I never considered this year.

My files are at https://github.com/andrewschultz/rpg-mapping-tools/tree/master/samples ā€¦ this is a big project for me as I remember writing about 30 very similar apps and thinking, well, youā€™d need a super advanced expert to pull it all together. After some thinking I saw a way to maybe conglomerate MAPCPY and MAPCONV. Which would also be big.

Iā€™ve had a lot of other progress such as a silly app to clean up my PERL scripts. Until last year I never used

use strict;
use warnings;

So my task was to find and clean up everything and fix up weak code on the way. I even wrote a clever (I think) regex to convert ā€œ@x[1]ā€ to ā€œ$x[1]ā€.

One thing I did was to add Trizbort logic-flow maps for all the areas of A Roiling Original that needed it. Itā€™s a bit more feature-creep, but Iā€™m pleased how they turned out.

https://github.com/andrewschultz/stale-tales-slate/commits/master/Roiling/maps

The thing is Iā€™ve been doing something every day but nothing spectacular popped out yet.

Well, it hasnā€™t been a full week yet, but I remember saying that before and then not doing anthing here for 3 weeks.

I wrote up Shuffling Around flowchart maps to go with my Roiling Original maps. I even cleaned up all of the Roiling maps so that the lines donā€™t intersect. It was a fun puzzle and got me interested in if this is always possible, or not.

I think these will make nice feelies for the next release, which has already been delayed long enough.

I also realized I could roll up all these maps into one big PDF with PDFTK. I can throw on an introductory page and itā€™ll make a nice document, I think. Iā€™ll try to do that tonight.

My Spring Thing game is finally falling into place, I think.

I also managed to finish a piece of code that takes some old maps I wrote and breaks down the 8x8 icons, a sort of reverse OCR. Nothing that complex, but I managed to add a lot of optionsā€“and it works.

I also put the finishing touches on a program to figure out ELO ratings for the Big Ten. Iā€™ve been hanging around a Purdue site (I was born there) and hadnā€™t seen an ELO rater and always wanted to do one for a real world scenario. I wrote one for a review contest years ago but finally put it in place with predictors, home/away adjustments, etc. It was neat to watch ratings bump up and down. Some people gave ideas for features, and that made it a neat project.