💾 Archived View for thrig.me › blog › 2024 › 03 › 09 › 7drl-post-mortem.gmi captured on 2024-06-16 at 12:34:50. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2024-05-26)

-=-=-=-=-=-=-

7DRL (Pre and During and) Post Mortem

The problem with a 7DRL is that there is not much time (seven days to write a game being what the previous acronym indicates). The line between "generic library code" and "this code fits a specific game like a glove" can get pretty fine, though to be official you would need, well, officials. Maybe the contestants could be locked in a room with a laptop and food like they did for the traditional Chinese exams (minus the laptop). Maybe we'll call that "hard" mode.

   #################################################################
   #   xxxxx  xxxx     x     xx  x     xxxxx xx         xxxx       #
   #   xxxxx xxxxx    xxx    xxxxxx    xxxxx xxx        xxx       x#
   #      xxxxxxxxxx  xxxx   x xxxxx  xxxxx  x          xx      xx #
   #       xxxxxxxxx  xxxxx   xxxx  x  xxxx x    xxx xxxxx      xxx#
   #  xx     xxxxxxxx xxxxx xxxxx       xx x  xxxxxxxxxxxxx    xx  #
   #xxxx     xxxxxxxxx xx  xxx    x     xx    xx xxxxxxxx  x  xx   #
   #xxx         xxxx   x  xxx     xxx   xxxx x    xxxxxxx  xx  x   #
   # x    xxxx    xx      xxxx     xxx   xxxxxx     xxxx   xx      #
   #xx   xxxxxxxxxxx       xxx     xxx  xxxxxx       xxxxxxxxxx    #
   #x x  x   x x x x  x   xx   xxxxxxxx xx x  x x x xxx xxxxxx xx x#
   #################################################################

Some test code output: draw a rectangle border; within that put down "x" by coinflips, then smooth the "x" with a cellular automaton. Might be an Rorschach test if you mirrored it once or twice.

Picking C (the theme was "roguelike" so using C seems, well, "like rogue") was probably a mistake. It's not really a language for fast development. Or maybe it is for not me. Another problem is my speed of writing code has never been good (and went to zero around the time of COVID) especially if I start writing tests or rambling in the documentation (as you may have noticed).

Another point is that rogue was a unix game, so obviously one must develop a roguelike on unix and for unix, or at least what passes for unix these days. Curses, too. ncurses is shipped with OpenBSD; maybe in OpenBSD 7.5 we'll even get ncurses 6! Also traditionally the source code was made available, though these days you do not have to go somewhere and get a tape from someone.

Also it might be nice to have an already working game loop and other such library code rather than having to figure out on the clock how to integrate the game loop with the energy system loop. And various other horrible bugs; even qsort(3) broke down on me! Insertion sort is probably okay here, as the scores file is about 20 entries at most, and in theory is sorted correctly?

    spam.c:81:38: warning: format string is not a string literal [-Wformat-nonliteral]
            int check_please = vasprintf(&spam, bacon, eggs);
                                                ^~~~~
    1 warning generated.
    cc digital-fov.o animate.o boss.o draw.o help.o jsf.o gs.o main.o menu.o monsters.o newlevel.o path.o player.o rip.o score.o spam.o  -o sbal  -lm -lncurses

Things may have gotten a bit silly.

Sir Bumpsalot, Alpaca Legionnaire    Play    Help   Scores   Quit
    ,wgy wliL@JZE@@@@@@@@@@$~'F'~`@'^'$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\
     \\y'Zg5my@@@P~F~P@@@5@|          ?~TT@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   ''_'`~~"~~*@@@_  .w_`'`-  x      .. /~~~Z~?T@@@@@@@@@@@@@@@@@@@@@@@@@@@
   "  0y       `~-``  ''1     .  `'=^r:   _  '`   jJ5@@@@@@@@@@@@@@@@@@@@@
   Mf/ZFg            +y            !'  _  `~^-   -``'~~@@@@@@@@@@@@@@@@@@@
   w\?444qg_       w   L =      `   ^=   ._  __       ~ T@@@@@@@@@@@@@@@@@
    !\GN$55@g_      .',,      ,:    . . \               `Z4@@@@@@@@@GJ5~TF
   ?"fZZZ4~~'       " _1i.     , / ' ,`y'       -   !  \ aMyy@@@@@@@@$\@Zd
   ,f \'Z"_  _        `'`  +', !|    ' ~ -    '  "^ `   g$@@@@@@@@@@$@Z@g
   _ 'w''"  ,~'            "    `\   |'"   !  ` m _\'_ t@@@@@@@@@@@@@@@$@@
    ' ,'/ w^`               f             ;'        "   "4@@@@@@@@@@@@@@@@
   Z  y-~y   /           + `     `        `  .   ,w       4~@@@@@@@@@@@@@@
   " \/_!i  ..,    w-'/    _`'   ' _            </         '    ~~@@@@@@@@
     /\-*-  ''     ' ' , / '     ` ',           `.~`     "      agy~@@@@@@
   "  at@r-t  `  :' /  'W !  M ,   "`         .  "      rw        ` `0$@Z0
   ,  45@$_y   I   /       ,   ^  ,.  `      ,   _ _ '/'  ~         @@g@@y
   y_ ,5@@$ _z            ,['  / ,  '       ~ '  r j\ + '~ 4r       $@@@@@
   @@@@@@@a@@r        ,', 'J  .  '_    ,,,    w , ,~     ,L^ :-.+  4@@@@@@
   @@@@@@@@@@$T :     ! l f.$/FL_,,'   '=. ,\aaqa- *    ~ [      _y@@@@@@@
   $@@@@@@@@@$             "wW'/L   _"/\_ \`-'___yaag#m$ma$w_yaz@F@@@@@@@@
   @@@@@@@@@@1              ` + `_df+~ '`i y@Z@\$\@Z05ZEZ/0Za5\$5J05GFTTT
   \@@@@@@@@@              '-   , `~J"'   $G5Z$$y?Zy5Z$F/yF$5J\FJG@0'$F

Image of the gameplay (9.3K)

gemini://thrig.me/game/sbal/sbal-0.1.tar.gz

gemini://thrig.me/game/sbal/

source code repository

submission to the 2024 7DRL