[MinorHack] The saga continues
CGamesPlay

This is the thread for the March 17th MinorHack.

I've done a lot of work around the site lately, so I will outline the new features here.

  • Email notification. Never miss another MinorHack because of not knowing! If you set your email address at the User Information page, and then set your email preferences at the Email Settings page, you can stay in touch!

  • The Bonus Rules page and everywhere else rules are shown now includes a link to that rule's page. This page will show a list of competitions that used this rule, so if you don't understand how to implement a rule, you can brainstorm from those.

  • Scores are in the database. There isn't a way to submit votes through the site yet, but you can look at the past competitions and see who won each one (and who has been disqualified because of not voting).

  • A hidden page, the User List, shows all the people who have played in MinorHack and how many times. This will eventually show the user's total score and some "participation rating" to sort them by ("participation" will probably be defined as something like number of competitions won * total number of points * total number of games played).

  • Icons have been added around the site. They add a splash of color :)

  • You can now download the entire competition as a single zip file containing all the entries, revised entries, and a Makefile. Also, entry filenames now reflect the user name of the submitter, and not the number.

Hope you enjoy!

Just to keep things easy to find in the future, the following is a list of all the previous MinorHack threads, sorted chronologically.

Zaphos

I like the site improvements!

Looking forward to the 17th ...

Kikaru

I'll see if I can participate. :)

Onewing

I better go to sleep now so I can wake up for this in time. :)

Dennis

I think I'll be able to participate but that depends on how tired I'll be in nine hours from now.

Kibiz0r

I'm hoping I'll wake up in time. ::)

Side-note: How early is too early to propose a competition? I have a friend who might've done this one, but he had a focus group dealie to go to. Anyway, I'd like to get him in on one. Weekends seem to work well, but I was wondering if next weekend would be too short notice.

CGamesPlay

Just go to the "Proposed Competitions" page, and put in the time :P

Kikaru

Well, I should be in this one! :D

CGamesPlay

2 yes's and 4 maybe's... Looking good so far :)

Kikaru

Heck, I was in a 1-man compo! ;) (it wasn't fun :'()

CGamesPlay

Yeah, and you got disqualified!

LennyLen
Kikaru said:

Heck, I was in a 1-man compo!

CGamesPlay said:

Yeah, and you got disqualified!

That is so delicious! :D

Krzysztof Kluczek

I'm in for this one. :)

CGamesPlay

I've said it before and I'll say it again: this could be the biggest MinorHack yet! :)

Oh and for your entertainment, I am presently coding a "download competition" feature, where you can download all the original and revised entries for a competition, including Makefiles! :)

Kikaru

And how was I disqualified? ???

Jakub Wasilewski

I hope I will be able to participate in this one, but I can't really promise anything - I'm having a bunch of, let's say, unwanted guests this evening :-/.

CGamesPlay
Quote:

And how was I disqualified? ???

Well, technically the whole competition is nil because there was no way to vote. You got DQed because you didn't vote :)

Ron Ofir

I think I might be in too.

CGamesPlay

Zip file downloading is done. You can check it out at any competition page. Also at the bottom of the pages is a link to the Makefile I wrote. Also, entry file names now reflect the user name of the submitter, not the number.

I would appreciate it if MinGW users would test the Makefile. I'm confident that it works, but a little assurance would be nice.

Dennis

yawn I'm tired already. I'll slack this evening. Good luck everyone!

CGamesPlay

Why did you change your name? ???

Jakub Wasilewski

Nope, doesn't work - it thinks it's under UNIX and subsequently fails to compile anything for obvious reasons.

I've attached a somewhat fixed Makefile that recognizes MinGW and defines CXX so that it works. But still, it doesn't take into account that some entries need other libs linked besides Allegro. For example, my entry in the competition linked requires -lwinmm for timing.

Quote:

Why did you change your name?

Obviously, he officially changed his legal surname to "" ;).

CGamesPlay

Why did you change the ifdef line to ifneq?

Why did you set CC to $(MINGDIR)/bin/gcc?

Why didn't the default CXX work?

Dennis

NameChange: Various reasons. One of the minor reasons was that I felt it was too long. I won't talk about the main reason publicly, if you absolutely have to know, you can pm me.

Jakub Wasilewski

Sorry, I attached the wrong file ;).

Anyway, "ifdef MINGDIR" executes the else part even if MINGDIR is defined in the environment. Definitely strange. I tried to fix it with ifneq($(MINGDIR),) but it appears that this doesn't work either...

The CC was just something I was checking. CXX defaults to cc1plus on some MinGW installations, even though MinGW doesn't have cc1plus.exe (only g++.exe).

Sorry for the confusion.

[edit]
And somehow I can't delete the attachment I made to this post. Please disregard it, it doesn't work either...

[edit2]
Ok, now it works with ifdef MINGDIR even though it didn't when I first tried ::). I think I'm going to duct-tape my mouth before I convince even more people that I'm an idiot.

Zaphos
Quote:

Well, technically the whole competition is nil because there was no way to vote.

My favorite is still the two man compo, where there is a way to vote ... sort of.

Kikaru

Jakub: who still needs convincing? ;)

Zaphos: That was the one comp I was glad I missed. :P

Jakub Wasilewski
Quote:

who still needs convincing?

Yeah, I think it's pretty obvious about now :P.

CGamesPlay: At the risk of being an idiot once more - are you sure the revised entries in the competition ZIPs are actually the revised ones? I get the same source for both xxx.c and xxx_r.c, with the difference being 8 bytes in the comments.

BAF

When is todays MH?

CGamesPlay

Jakub: Now it's my turn to be the idiot :) Fixed. Can you try the new Makefile? The only difference is the CXX = g++. Hope it works!

[append]
And BAF is just a lazy idiot.

[append]
The next MinorHack has been proposed, but it conflicts with TINS. I'm in favor of one right before TINS (I proposed it).

Jakub Wasilewski

It works OK now. I think it was something wrong with my system, I've had problems with environment variables once already - it seems that sometimes those that are set as "user" variables (as opposed to "system") are not working properly. "set MINGDIR" displayed "MINGDIR=c:/mingw", but make didn't consider it defined...

Kikaru

MinorHack starts in 13 min! :D

Hope it's a nice rule this time... :P

Jakub Wasilewski

I'm done ;).

My entry is called Arrow Fighter and is for the twitch-fingered ;). The aim is to press the shown key combination in the time alotted. Each level has less time than the previous, and any mistake is game over.

It should compile out of the box with a simple "g++ x.cpp -ox -lalleg", but I'll attach a Windows binary anyway.

[EDIT]
Since when is MinorHack so quiet?

Onewing

I joined with 47 minutes to go and uploaded at the buzzer. There's a bug I'm working on now. Mine's not a game unfortunately.

Simon Parzer

I didn't finish in time >:(
Now I'm thinking if I should make a revised one or not. Is it worth it anyway?

Kikaru

Mine is done as well. I didn't get a name. :(

Just throw stars to hit the enemies, don't get hit. I will make this into a working game a little later. :(

It's worth it if you want to. ;)

Jakub Wasilewski

Well, it seems this MinorHack is the biggest at a whopping 7 finished entries. I'm gonna go and play them all now.

CGamesPlay

9! :)

Kibiz0r

I think mine would be pretty fun, if it was playable. ;D

I never got the hang of deleting inside fors of std::lists. I always do... well, something else entirely.

Onewing

Uploaded a new version which allows you to have multiple images.

CGamesPlay

Kikaru's entry required 3 changes to compile: int main, not void, return 0, not return, and winalleg.h.

Kikaru

Well, not on mine. It ran fine the way it is. :-/

winalleg.h is a quick fix for std::vector. Forgot to take it out. :P

Onewing

Here's what mine does:

This image:

591614

becomes:

{"name":"591615","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/9\/7\/971c34d88c7697e39c9612e8d96fb45e.jpg","w":646,"h":512,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/9\/7\/971c34d88c7697e39c9612e8d96fb45e"}591615

Jakub Wasilewski

My entry has a nasty bug when you can't exit if you had a keypressed when the game ended (pretty much always ;)). I've fixed it in the revised entry, it's just one line of code changed from "while (keypressed());" to "while (keypressed()) readkey();" ;).

Attached a binary for the revised one.

This time around I honestly believe I wasn't going to make it. Around 20:23 I had nothing to show. Somehow, I did manage to pull it off... It's a great feeling when you don't stop and eventually get it done in time :).

[EDIT]

Quote:

9! :)

Not only I'm an idiot, it seems I'm also unable to count!

Anyway, you let me down Krzysztof :P. I thought we were going to make it the next "Teraz Polska" competition ;).

Kikaru

Ok, excuse my ignorance, but how do I run a makefile? ???

Jakub Wasilewski

Err.. make. At least if you have make installed with your MinGW, which you should.

Kibiz0r

make, from the command line, or mingw32-make if you have a certain GCC version.

Also, my entry isn't too bad after fixing that stupid for loop error. Took me a good 15 minutes to fix though.

Kikaru

Huh? I mean, a step-by-step walk-through of it. I know nothing about them... :-X

Zaphos
Quote:

Around 20:23 I had nothing to show.

Me too -- but that's the norm, for me ... :-[

How do I get Simon's to compile?

Simon Parzer
Quote:

Ok, excuse my ignorance, but how do I run a makefile? ???

You go into the dir and type "make"

Quote:

How do I get Simon's to compile?

Error? On my computer it compiles flawlessly.

Kibiz0r

Open up a command prompt, cd to the directory, type make, or mingw32-make if that doesn't work. If that doesn't work, don't even bother, you have something messed up and it'll take longer than the convenience it gives you in the first place.

BAF

Run make. :P

In order of ranking:

BAF - best game ever ;) (just kidding :P)
Jakub - awesome game, forgot to mention that the box is space
Zaphos - neat game, fun, and multiple levels
Kibizor - cool concept, gets boring after a while (nothing to do, all the things bunch together making it easy)
OneWing - kind of cool, not a game though, use deprecated functions
GrantG - same game as mine ;P not bad though, better done than mine, although has some bugs with collision detection
CGames - incomplete, cool start
Simon - you forgot END_OF_MAIN so i couldn't compile it without fixing, is incomplete, otherwise nice start

Of course, I ranked the completed entries ahead, wether or not I thought the product itself was better just because they finished. I wouldn't have changed much by not ranking that way.

[edit]
Zaphos - if it's the same error I got, just add END_OF_MAIN() at the end.

Simon Parzer
Quote:

Simon - you forgot END_OF_MAIN so i couldn't compile it without fixing, is incomplete, otherwise nice start

Oh, my.. ;D
On Linux you don't need END_OF_MAIN(), sorry for that.

Ranking
°°°°°°°

1. JakubWasilewski]- nice and complete game, feels very polished (fadeouts, etc.)
2. BAF]- nice pong clone, paddles are a tad too small
3. Kikaru]- looks like a fun game, but runs too fast; crashes sometimes, too (had to type "killall Kikaru" a few times :P
4. Zaphos]- nice snake/worms/nibbles/whatever clone; runs too slow, level design makes no sense to me
5. CGamesPlay]- useless, but the movement and rotating of the ship looks great
6. GrantG]- your breakout clone doesn't make much sense because there is no wall to destroy (yet?)
7. Onewing]- the display is not very accurate (I know of better ASCII viewers); besides that, it's not a game
8. Kibiz0r]- crashes everytime I click, sorry

Jakub Wasilewski

I did mention the box is space in the instructions. At least I did mention that space is needed ;).

Anyway, the re-revised version (attached again, sorry ML) has a bug fixed where the time didn't stop after you enter all 6 symbols. I had if (where != 6); timeLeft -= 0.01;. One sodding semicolon... >:(.

Zaphos
Quote:

Zaphos - if it's the same error I got, just add END_OF_MAIN() at the end.

Ah -- yeah, that was it, thanks!

CGamesPlay

Yes, well you probably have a winalleg.h ;)

Jakub: Cool game! It would be perfect if it had an option to restart without quitting, but it's great as is.
Zaphos: A solid snake game, albeit with a suicide button. Very good job.
Kikaru: Very neat concept, but it was way to fast and crashed after I played for a bit.
Simon: Best graphics of all the entries :)
GrantG: It's a bit fast, but it's a good single-player pong. I put it above BAF's because one can get points :)
BAF: no way to lose, a bit fast, but a solid pong game. I assume, at least. Nobody ever got any points, and looking at the source code, it's impossible to win.
Kibiz0r: Neat concept, but doesn't seem to be beatable, and crashes if I click the screen.

Onewing: I can't play it. I don't actually have any bitmaps sized 80 or less.

So! Jakub, Zaphos, Kikaru, Simon, GrantG, BAF, Kibiz0r, Onewing.

I won't call my ranking final yet until Onewing offers something in his defense...

[append]
Okay, his isn't a game. That's my ranking.

BAF

I didn't take off for it, but I didn't see space mentioned anyplace (I probably didn't read carefully enough) until I checked the source.

Kibiz0r
makefile said:

The following entries failed to compile: SimonParzer.exe

:-/

BAF

For the third time, he forgot END_OF_MAIN() after main, so you have to add it yourself. :P

Jakub Wasilewski

The new revised version has an option to restart instead of quitting ;). Attached.

Quote:

I didn't take off for it, but I didn't see space mentioned anyplace (I probably didn't read carefully enough) until I checked the source.

Even if you did lower your score because of it, it's your right. If someone isn't clear about the game rules, it's always the creator's fault - even if it is on the screen, perhaps it's not drawing attention to itself enough ;).

Anyway, I distinctly remember wasting 20 seconds to add a line mentioning the keys ;).

CGamesPlay

Jakub: can you put together a zip file with the windows binaries? Then drop by the administration page.

Kibiz0r

There's too much text in this thread, it got lost in the ASCII blizzard. ;D

Simon Parzer
Quote:

There's too much text in this thread, it got lost in the ASCII blizzard. ;D

Yeah, everytime I hit F5 there are 2-5 new posts. shudders

Onewing
Quote:

I won't call my ranking final yet until Onewing offers something in his defense...

Fair enough! User friendly-ness isn't something I think of when in a coding frenzy. A simple stretch sprite allows you to throw any image in: (just use this code)

#SelectExpand
1// Entry for MinorHack at March 17th 2// Submitted by Onewing 3// Compile with allegro! 4#include "allegro.h" 5#include<stdio.h> 6#include<string.h> 7#include<math.h> 8 9/**************** DEFINES & MACROS *************/ 10#define BPP 32 11#define MODE GFX_AUTODETECT_WINDOWED 12#define GFX_W 640 13#define GFX_H 480 14#define MAX_BLOCKS 1000 15 16/*************** CONSTANTS ********************/ 17#define MASK makecol(255,0,255) 18 19/*************** GLOBAL ********************/ 20volatile int system_time; 21volatile int ticks; 22volatile int framerate; 23volatile int draw_ticks; 24PALETTE pal; 25COLOR_MAP trans_table; 26BITMAP *buffer; 27 28int iTimer_Speed; 29int iFrameRate; 30int quit; 31int over; 32 33#define MAX_ROW 60 34#define MAX_COLUMN 80 35 36void timer1(void) 37{ 38 system_time++; 39}END_OF_FUNCTION(timer1); 40 41void frametimer(void) 42{ 43 framerate = draw_ticks; 44 draw_ticks = 0; 45}END_OF_FUNCTION(frametimer); 46 47 48 49void init() 50{ 51 // Allegro Library 52 if(allegro_init() != 0) 53 { 54 allegro_message("ERROR: Failed to initialize allegro library. Terminating program.\n"); 55 allegro_message("REPORT: %s\n", allegro_error); 56 exit(0); 57 } 58 59 60 set_color_depth(BPP) ; // 24 bit colour 61 if (set_gfx_mode(MODE, GFX_W, GFX_H, 0, 0)<0) 62 { 63 set_gfx_mode(GFX_TEXT, 0, 0, 0, 0); 64 allegro_message("ERROR: Failure to init video mode! Terminating program.\n"); 65 allegro_message("REPORT: %s\n", allegro_error); 66 exit(0); 67 } 68 69 70 // Install Timer 71 if(install_timer() != 0) 72 { 73 set_gfx_mode(GFX_TEXT, 0, 0, 0, 0); 74 allegro_message("ERROR: Failed to install timer. Terminating program.\n"); 75 allegro_message("REPORT: %s\n", allegro_error); 76 exit(0); 77 } 78 79 80 81 // Install Keyboard 82 if(install_keyboard() != 0) 83 { 84 set_gfx_mode(GFX_TEXT, 0, 0, 0, 0); 85 allegro_message("ERROR: Failed to install keyboard. Terminating program.\n"); 86 allegro_message("REPORT: %s\n", allegro_error); 87 exit(0); 88 } 89 90 /*install_joystick(JOY_TYPE_AUTODETECT); 91 poll_joystick(); 92 if(num_joysticks == 0) 93 { 94 allegro_message("NOTE: No joystick could be found, but you can still use keyboard."); 95 } 96 startpos = joy[0].stick[0].axis[0].pos;*/ 97 98 99 // Install Mouse 100 if(install_mouse() < 0) 101 { 102 set_gfx_mode(GFX_TEXT, 0, 0, 0, 0); 103 allegro_message("ERROR: Failed to install mouse. Terminating program.\n"); 104 allegro_message("REPORT: %s\n", allegro_error); 105 exit(0); 106 } 107 108 text_mode(MASK); 109 reserve_voices(32,-1); ///Reserves more channels of sound for us 110 111 // Install Sound 112 if(install_sound(DIGI_AUTODETECT, MIDI_NONE, NULL) != 0) 113 { 114 allegro_message("ERROR: Failure to install sound. Attempting to run without sound.\n"); 115 allegro_message("REPORT: %s\n", allegro_error); 116 if(install_sound(DIGI_NONE, MIDI_NONE, NULL) != 0) 117 { 118 allegro_message("ERROR: Failed to install sound. Terminating program.\n"); 119 allegro_message("REPORT: %s\n", allegro_error); 120 exit(0); 121 } 122 } 123 124 srand( (unsigned) time(NULL)); 125 126 // Install Time Handler 127 LOCK_VARIABLE(system_time); 128 LOCK_VARIABLE(ticks); 129 LOCK_VARIABLE(framerate); 130 LOCK_VARIABLE(draw_ticks); 131 LOCK_FUNCTION(timer1); 132 LOCK_FUNCTION(frametimer); 133 iTimer_Speed = 60; 134 install_int_ex(timer1, BPS_TO_TIMER(iTimer_Speed)); 135 install_int_ex(frametimer, BPS_TO_TIMER(1)); 136 //install_int(timer1, 1000); 137 138 // Setup the buffer 139 buffer = create_bitmap(GFX_W, GFX_H); 140 141 // Setup translucent table 142 create_trans_table(&trans_table, pal, 0, 0, 0, NULL); 143 color_map = &trans_table; 144} 145 146//**************** Classes *********************** 147 148int red(int color_value) 149{ 150 return int(color_value / pow(256, 2)) % 256; 151} 152int green(int color_value) 153{ 154 return int(color_value / pow(256, 1)) % 256; 155} 156int blue(int color_value) 157{ 158 return color_value % 256; 159} 160 161class TEXTS 162{ 163public: 164 char c; 165 int col; 166}; 167 168TEXTS txt[100][100]; 169 170int game_init(char *cpath) 171{ 172 BITMAP *bImage, *bS; 173 int col, colr, colg, colb, v; 174 175 bImage = load_bitmap(cpath, NULL); 176 if(!bImage) 177 { 178 allegro_message("Could not open %s", cpath); 179 return 1; 180 } 181 182 bS = create_bitmap(100, 100); 183 stretch_sprite(bS, bImage, 0, 0, 100, 100); 184 185 for(int i = 0; i < 100; i++) 186 { 187 for(int j = 0; j < 100; j++) 188 { 189 txt<i>[j].c = ' '; 190 txt<i>[j].col = 0; 191 } 192 } 193 for(int x = 0; x < bS->w; x++) 194 { 195 for(int y = 0; y < bS->h; y++) 196 { 197 col = getpixel(bS, x, y); 198 colr = getr(col); 199 colg = getg(col); 200 colb = getb(col); 201 202 v = colr + colg + colb; 203 if(v < 100) 204 txt[x][y].c = '#'; 205 if(v >= 100 && v < 200) 206 txt[x][y].c = 'X'; 207 if(v >= 200 && v < 300) 208 txt[x][y].c = 'P'; 209 if(v >= 300 && v < 400) 210 txt[x][y].c = 'C'; 211 if(v >= 400 && v < 500) 212 txt[x][y].c = '+'; 213 if(v >= 500 && v < 600) 214 txt[x][y].c = '-'; 215 if(v >= 600 && v < 700) 216 txt[x][y].c = ','; 217 if(v >= 700 && v < 800) 218 txt[x][y].c = '.'; 219 txt[x][y].col = col; 220 } 221 } 222 destroy_bitmap(bImage); 223 destroy_bitmap(bS); 224 225 return 0; 226} 227 228void game_update() 229{ 230 if(key[KEY_ENTER]) 231 { 232 while(key[KEY_ENTER]){} 233 over = true; 234 } 235 236} 237 238void game_draw() 239{ 240 clear(buffer); 241 242 for(int x = 0; x < 100; x++) 243 { 244 for(int y = 0; y < 100; y++) 245 { 246 textprintf_ex(buffer, font, x*8, y*8, txt[x][y].col, -1, "%c", txt[x][y].c); 247 } 248 } 249 textprintf_ex(buffer, font, 200, 470, makecol(255, 255, 255), -1, "Press ENTER to go to the next image"); 250 stretch_sprite(screen, buffer, 0, 0, GFX_W, GFX_H); 251} 252 253void game_shutdown() 254{ 255 destroy_bitmap(buffer); 256} 257 258 259 260void play_game(char *cpath) 261{ 262 iFrameRate = false; 263 if(game_init(cpath) != 0) 264 return; 265 266 while(!quit) 267 { 268 while(!key[KEY_ESC] && !over) 269 { 270 while(system_time && !over) 271 { 272 system_time--; 273 ticks++; 274 game_update(); 275 } 276 277 draw_ticks++; 278 game_draw(); 279 280 if(iFrameRate) textprintf(screen, font, 10, 10, -1, "%d", framerate); 281 } 282 quit = true; 283 system_time = 0; 284 ticks = 0; 285 } 286 287} 288 289 290 291int main(int argc, char **argv) 292{ 293 init(); 294 295 if(argc < 2) 296 { 297 allegro_message("Please enter the path(s) of a bitmap image on the command line."); 298 exit(0); 299 } 300 301 for(int i = 1; i < argc; i++) 302 { 303 over = false; 304 quit = false; 305 play_game(argv<i>); 306 } 307 308 game_shutdown(); 309 310 return 0; 311} 312END_OF_MAIN()

CGamesPlay

Kibiz0r: the new entry is much better. I rank it above BAF's, for the "revised" competition, which doesn't exist :(

Jakub Wasilewski
Quote:

Jakub: can you put together a zip file with the windows binaries? Then drop by the administration page.

Done. Not sure if it did anything though ;). I assumed the competition ID was 12, because that's what is showing in the URL.

Kibiz0r
Quote:

Kibiz0r: the new entry is much better. I rank it above BAF's, for the "revised" competition, which doesn't exist :(

Well, now that I know there is an easy way to do deletion in a for loop for std::lists, I will do much better next time.

BAF

Windows exe zip pack attached.

Jakub Wasilewski

Anyway, I've got level 14 in my game (the revised version, which is easier because it stops the time once you enter everything). Now, beat me :).

CGamesPlay

Well, zip file downloading or uploading seems to be broken. I don't know how to store them or load them from the database...

Kibiz0r
Quote:

Anyway, I've got level 14 in my game (the revised version, which is easier because it stops the time once you enter everything). Now, beat me :).

I got 10 the first time I played it, it's quite fun. And pretty.

my sticky note said:

BAF: Pong remake, well done

CGamesPlay: Asteroids with neat-o movement and nice graphics

GrantG: Breakout clone that moves too fast with impossible-to-see blue paddle and nothing to obliterate?

Jakub Wasilewski: Awesome DDR-style game -- fun to play with neat graphics, got to level 10!

Kikaru: A bit broken, too fast, and confusing as hell... but somehow still fun for the brief time that the stars are aligned properly

Onewing: It's not really a game, but... it's a cool tech demo, I have no idea how to rank it yet

Simon Parzer: Er, uh... you can't really "do" anything.... it looks neat, though...

Zaphos: Flawless Snake clone with a little twist. Great pacing and difficulty, I could imagine playing it on my cell phone!

Still not sure about rankings, but feedback is always nice, eh? :D

CGamesPlay

Okay, it's working now. Feast your eyes.

Kibiz0r: are those sorted form least favorite to favorite?

Kikaru

Ok, my vote, in order:

  • Jakub - really nice, pretty full game.

  • Zaphos - cool, I like the multiple levels.

  • BAF - it works. you should get some kind of award. :P

  • GrantG - it also works, but is redundant. Not too fun, unfortunately.

  • CGames - I can't do anything other than move around. :P

  • Simon - nothing at all to do.

  • Kibz0r - looks neat, but crashes when I click the mouse.

  • Onewing - doesn't run for me, but looks pretty cool.

BAF

Nah, it's alphabetical order. He doesn't know about his rankings yet. Yeah, it's ordered by rank, and I win. ;D

Jakub Wasilewski

My ranking:

  • Kikaru - nice and original mechanics, too bad the controls are somewhat clunky when throwing stars sideways.

  • Zaphos - nice, but I would use the time you spent on multiple levels by adjusting the game's speed. As it is, it's simply too slow.

  • Onewing - simple but effective, and noone said that Minorhack entries have to be games.

  • GrantG - well, it works and is actually quite challenging. Not really original though.

  • Kibiz0r - doesn't seem to have a point, but there is some sort of original idea in there. Feels a little incomplete.

  • BAF - complete and does work. But it's just Pong, and an unwinnable one to boot.

  • Simon Parzer - incomplete - but I think it's cool that you tried to emulate an actual textmode - even the cursor snaps to character boundaries.

  • CGamesPlay - cool rotating ship :P.

Kibiz0r

My rankings, from favorite to least favorite:

Jakub Wasilewski - It's just plain fun and polished
Kikaru - He took a chance and made something odd, and I appreciate that more than doing what's already been done, even if it's done well
Zaphos - Not an enormous amount on the originality side, but well-executed
BAF - Pong. Not good, not bad. Just Pong.
CGamesPlay - You can move, and moving feels pretty cool, but the illusion breaks down when you fly straight over the neat-looking asteroids. And I would rather be able to shoot stuff than have neat-looking asteroids, too...
GrantG - The paddle was impossible to see, it moved too fast on my computer, why waste an hour almost making Breakout, anyways? It's already been done to death.
Onewing - Anywhere else, I would probably remark about how neat it is, but for an hour's work, I would rather be able to do something, anything, than see all the cool tech demos in the world.
Simon Parzer - Looks neat, but there's nothing to do!

As you can tell, after the Independent Games Summit at GDC, I am infused with indie fury. I yell "Innovation!" as my battle cry as I wage war against publishers. But, whatever, those are my votes and I'm sticking to them.

Edit: Well, after seeing that voting Kikaru that high up wasn't as insane as I originally thought, I'm going to go with my original ranking from my sticky...
/switch

Krzysztof Kluczek

OK, I've completely forgotten the compo, my bad, better luck next time. :)

Zaphos

Here's my ranking:

  • Jakub -- very fun, with great presentation!

  • Kibiz0r -- interesting -- even though it's broken, there's a fair amount that does work ... and I like the little ascii man.

  • Kikaru -- interesting concept, but too chaotic? But still, basically complete.

  • BAF -- The basic game is there, but without a way to change the spin or angle or speed of the ball, it's all a bit silly ...

  • GrantG -- Same as BAF's ... but without a timer to control game speed.

  • CGamesPlay -- Nice graphics; wish shooting were there. Seems technically interesting.

  • Simon -- Nice graphics; wish shooting were there.

  • Onewing -- Fun utility -- though I wish you'd thought of the stretch_blit trick during the comp.

edit: decided to prioritize gameplay a bit more ... it's tricky to rank these games.

Jakub Wasilewski
Quote:

Me: Anyway, you let me down Krzysztof :P. I thought we were going to make it the next "Teraz Polska" competition ;).
KK: OK, I've completely forgotten the compo, my bad, better luck next time.

Better luck? I did my part :P.

CGamesPlay

Wow, I wouldn't have thought that my movement, which I considered mundane, would be the highlight of my entry :)

[append]
Waiting on votes from Onewing and GrantG!

Jakub Wasilewski
Quote:

Wow, I wouldn't have thought that my movement, which I considered mundane, would be the highlight of my entry

Well, considering that movement is the only thing complete in your entry... :P.

Krzysztof Kluczek
Quote:

Better luck? I did my part :P.

OK, I'll win the next one (unless they pick some ridiculous time). :)

CGamesPlay

Okay, check out the revised version of my entry. It's a working game :) Took me about an extra hour, but I wasn't racing.

Onewing

I'm back! Time to vote:

(From Best to Not Best)
Jakub Wasilewski - Simple, addicting and well done. Just the way I like it cooked!
Zaphos - C snakes are apparently slow.
BAF - Everything feels and looks pretty good, but the AI continually pwng'ed me.
Kikaru - It's madness! I did like wall-bouncing however, even if that made me invincible. ;)
Kibiz0r - Watch out for the seizure numbers! Seriously, is that all I'm supposed to do?
GrantG - Functional, although blazing fast and hard to see.
Simon Parzer - Intended to be a Duck Hunt? I just saw things fly by but I couldn't figure out what to do with them...
CGamesPlay - No worky. I see somethings but nothing happens. :-/

Kibiz0r
Onewing said:

Kibiz0r - Watch out for the seizure numbers! Seriously, is that all I'm supposed to do?

The Entry Page said:

Revised version works. It's called Garbage Collector. You have a bunch of memory that you have to clean up, and if you touch it, you get deleted. To delete the memory, however, click on the screen and 2 seconds later, the red box will take any trapped memory along with it. The yellow stars are powerups that give you more deletes to use. If you run out of deletes, you lose. Supposedly there are levels, but I never got that far in testing it.

Zaphos
CGamesPlay said:

Okay, check out the revised version of my entry.

It crashes when I press space :-/

GrantG

Here is my ranking. It was quite hard, as I'm not very good with this ranking business.

Jakub Wasilewski - Easy to figure out, and challenging as well as fun
Zaphos - Good game, the snake is a bit slow though
Kikaru - Fast paced, a bit too hard for me, the wall bug helped though :P
BAF - good pong game, kind of like mine, the computer pwned me though
Kibiz0r - couldn't really figure out how to play this, maybe I'm just incompetent :P
Simon Parzer - nice start, but not finished
CGamesPlay - asteroids, without ammunition!
Onewing - cool utility, not a game though

Kikaru

Not a bug. I still need to do some work on it. The end result should be better. :)

Is it just me, or has everyone voted now? :D

Kibiz0r
Quote:

Kibiz0r - couldn't really figure out how to play this, maybe I'm just incompetent :P

Is it because of the WASD keys? I know some people prefer arrow keys, but I'm so used to WASD, I never think of it until after the fact.

CGamesPlay

Not quite. BAF needs to rank Kikaru's entry. Here's what I have to far:

12981 BAF
2 3653 Jakub
3 1468 Zaphos
4 7616 Kikaru
5 6203 Kibiz0r
6 6152 Onewing
7 8173 GrantG
8 2559 CGamesPlay
9 3330 Simon
106203 Kibiz0r
11 3653 Jakub
12 7616 Kikaru
13 1468 Zaphos
14 2981 BAF
15 2559 CGamesPlay
16 8173 GrantG
17 6152 Onewing
18 3330 Simon
191468 Zaphos
20 3653 Jakub
21 7616 Kikaru
22 6203 Kibiz0r
23 2981 BAF
24 8173 GrantG
25 2559 CGamesPlay
26 3330 Simon
27 6152 Onewing
282559 CGamesPlay
29 3653 Jakub
30 1468 Zaphos
31 7616 Kikaru
32 3330 Simon
33 8173 GrantG
34 2981 BAF
35 6203 Kibiz0r
36 6152 Onewing
377616 Kikaru
38 3653 Jakub
39 1468 Zaphos
40 2981 BAF
41 8173 GrantG
42 2559 CGamesPlay
43 3330 Simon
44 6203 Kibiz0r
45 6152 Onewing
463653 Jakub
47 7616 Kikaru
48 1468 Zaphos
49 6152 Onewing
50 8173 GrantG
51 6203 Kibiz0r
52 2981 BAF
53 3330 Simon
54 2559 CGamesPlay
556152 Onewing
56 3653 Jakub
57 1468 Zaphos
58 2981 BAF
59 7616 Kikaru
60 6203 Kibiz0r
61 8173 GrantG
62 3330 Simon
63 2559 CGamesPlay
648173 GrantG
65 3653 Jakub
66 1468 Zaphos
67 7616 Kikaru
68 2981 BAF
69 6203 Kibiz0r
70 3330 Simon
71 2559 CGamesPlay
72 6152 Onewing

[edit]
Added Onewing's and GrantG's.

[append]
Kikaru, you should revise the entry with better timing.

BAF

Oops, forgot rate Kikaru. Kikaru gets one higher than Kibiz0r.

[edit]
Oh, by the way, my pong game isn't unwinnable. If you can hit the ball to hit the AI's paddle at the right angle, close enough to the bottom, it will hit my collision detection bug and give you a point. ;P

Onewing

Oddly enough, I'm having fun dumping all the bitmap images in My Pictures to my program seeing what results I get. ;D

This was a great MH, lots of people, great rule, etc.

CGamesPlay

Yeah, the biggest MinorHack yet, with some really great entries. I'm going to change this rule to read "allegro's text output functions", since I think that's what it really means.

Would someone tally the votes for me, please? I think I have it right, but I don't want to put them into the database wrong.

Kikaru

Huh? What 'timing' are you referring to?

CGamesPlay

I'm referring to it going at Mach 55 on my system.

Quote:

(19:31:37) Ryan: hey you forgot to rank kikaru's entry
(19:32:56) BAF: i did
(19:32:57) BAF: ?
(19:33:03) Ryan: yes
(19:33:33) BAF: how do you play it
(19:33:54) Ryan: very quickly throw the stars at enemies using space
(19:33:58) Ryan: you are the green one
(19:34:08) BAF: QUICKLY
(19:34:09) BAF: holy shit
(19:34:12) BAF: it runs at mach 55

BAF agrees with me :)

Kikaru

Hmm... any idea why?

I used standard Allegro interrupt handler timing, and rest(1) within the waiting loops for less CPU usage. Did you have anything with flash in it running in the background?

CGamesPlay

Idk, install_int(update_timer, 1) probably.

Kikaru

What should I do instead?

Tried install_int_ex, and it goes crazy fast. Maybe something to do with that?

[EDIT]
found out why that was acting that way. Maybe replace install_int(update_timer, 1) with install_int_ex(update_timer, MSEC_TO_TIMER(1));?

Jakub Wasilewski

The parameter for install_int is in msec. The parameter for install_int_ex is something completely different, consult the manual.

Anyway, timers are only reliable somewhere around 100 ticks per second. Anywhere below that, it's a grey zone. On some computers it will work flawlessly, while on others it will behave strangely. 100 ticks are enough for most purposes, especially for one-off things like MH entries.

BAF

install_int_ex(blah, BPS_TO_TIMER(x));

I used x=60 in my entry.

Kikaru

But does it run fine with the change?

CGamesPlay

Okay, there was some shakiness on the site because I was changing things. However, now votes are listen on the page. Everybody make sure they are correct :)

Kibiz0r

I've gone through about 5 drafts of trying to talk about me liking my game a lot more than how it was ranked, yet each draft comes off incredibly conceited. I'm just happy with how it turned out, but apparently no one else was. I guess all that matters in the end is what I think, but I just wonder where the disconnect is.

Edit: Although, if you can get past about level 5, it gets way too easy...

Zaphos
Quote:

I'm just happy with how it turned out, but apparently no one else was. I guess all that matters in the end is what I think, but I just wonder where the disconnect is.

Well, we're not ranking the revised versions, and your un-revised version had a lot missing and was confusing. It's not clear what criteria we should be using to make our rankings, but having a "complete" game seems to be important to a lot of us.

I hope you won't worry too much about the ranking ... just have a good time, and do something interesting!

Kibiz0r

I don't worry about the rankings, I worry that I seem to not know how to make a game that appeals to people.

As for the revised vs. un-revised, I've always used the revised to see what they intended to make, and measured the un-revised against it to see how much of it they got done. I had everything implemented, and the only difference between my unrevised and my revised was deletion.

I think, in the future, I need to be more in the spirit of hackery. What ended up making my un-revised broken was that I was taking great pains to not leak memory.

Edit: Also, even though this is my 3rd MinorHack, I'm still not sure exactly what to do about the end of the deadline. When I saw the clock turn 4:00, I just made sure it compiled and dumped it into the site, problems and all.

Krzysztof Kluczek
Quote:

I worry that I seem to not know how to make a game that appeals to people.

I think for MinorHack there are three basic rules, in this order:
1. Make it playable.
2. Make it fun.
3. Make it original.
(you can add "profit" as fourth) :)

1) Make sure the basic gameplay is there before you start to add features related to anything else. Basic ways to achieve this:
- use basic graphics (circles, lines and boxes do well),
- don't bother with title screen,
- make sure controls are comfortable (not too slow, not too sensitive),
- make ending screen as simple as possible (textout, "while(!key[KEY_ESC])" and exit(0) will do)

2) Make sure end results are reflecting player's actions. Don't make game unbeatable or so easy that player can play it infinitely. This can be done by gradually increasing game difficulty or adding "You Win!" screen. "You Win!" screen can bring life to even most ridiculously easy and boring game if you stop the game before player gets bored. Using some kind of maps (tile maps or wave information) is also good idea if you can get it done because it will add variety to your game that will keep player interested.

3) Pick an idea you think nobody else is going to pick. You can take first 5 minutes to think about the theme and try to come up with something unusual that will fit the theme.

And bottom guideline to everything: don't overshoot, all the time be aware of remaining time, cut features and simplify everything as much as possible when you feel you have too little time. Basically, no matter what you do, you will have to cut some features at one point or submit something unplayable. Whenever you feel you have some time, realize that you are wrong for 99%. :)

Well, this got a bit longer than I've intended it to be, but now it may be worth putting somewhere on the compo site, unless you have different view on how to do the 1h gamedev compo. :)

Kibiz0r
Quote:

Well, this got a bit longer than I've intended it to be, but now it may be worth putting somewhere on the compo site

I would agree, sometimes you need a reminder to just not be an idiot.

Don't even bother reading this, I think I need a journal or something.
[introspection]

And, I'm regretting having said anything, earlier. I have a laid-back personality, but I have a type A way of communicating. It usually leads to conversations that give people the wrong impression of me, and I end up being friends with people I'm nothing like and pushing away people I am like. I need to take a speaking class or something.

My favorite is when I say something that makes me sound conceited, and then prove to them that I really am conceited by trying to explain that I'm not like that, because being conceited is, of course, not a positive character trait.

Good example: My sister was changing a light bulb, and she joked that she's being really dumb because there is metal all around the bulb-socket dealie and it continues into the ceiling. I said that it didn't matter because the switch was off, and she said you can get electrocuted anyways. My curiosity was piqued, and I tried to reason it out, and then went to the internet, all the while telling her what I thought the answer was at the time, and she thought I was just trying to be right. If I wanted to be right, why would I research it and risk being wrong, anyways?

Hm, I just realized that perhaps it's just that I'm so curious. With the light bulb thing, I just wanted to know the answer. With MinorHack, I wanted to know why I was voted so low. Well, I guess it's better to be someone who is trying to know everything, than someone who thinks they know everything...

[/introspection]

Jakub Wasilewski
Quote:

I wanted to know why I was voted so low.

Everything below is my opinion only, and you're free not to share these views:

A 1-hour compo is all about hacking together stuff that works in that 1 hour. We shouldn't in any way take the revised entries into consideration when judging, and, specifically, we shouldn't look at what the author tried to achieve. This is the only way to have a fair competition.

For me, the most important factor is completeness. A complete entry shows that the author correctly judged his abilities and stood up to the challenge. Originality and fun-factor are also important, but only if they're there in the original entry, and not only in the author's mind (or the revised entry).

I saw that you tried to do something original and even tried to have a theme with the "delete"'s and memory and so on. That's great, and that is why I rated you above BAF who went the easy way and made a pong game. But your entry crashed when I pressed the mouse button, so the gameplay just wasn't there - I could imagine it, but it wasn't in the entry. All I could was run around in circles until all the digits melted into one jittery being, and then commit suicide. I would've ranked you much higher had the original worked like the revised version does.

Anyway, my recipe for MinorHack is:

19:57 - close the door to my room, put on headphones, turn on ambient music, turn off IM
19:58 - open the text editor, save an empty file as mhack.cpp.
19:58:30 - open the command line, type "g++ mhack.cpp -omhack -lalleg -g3", press enter
19:59 - start refreshing the page ;).
20:00-20:05 - coming up with an idea. If I don't come up with a good idea in that time, I just go with what I have, because there isn't much time really. During this time I also type up the basic framework with timers, initialization and so on - it's a routine task, so I can think about the idea while typing the framework.
20:05-20:30 - creating something that works.
20:30-20:50 - creating something that plays nice.
20:50-20:55 - creating something that looks nice.
20:55-21:00 - tweaks/submitting.

I always try to come up with an idea that I think I can do in 40 minutes or less. It always takes longer than you think ;).

[edit]
Oh, and \o/. Unanimous win :).

CGamesPlay
Quote:

coming up with an idea. If I don't come up with a good idea in that time, I just go with what I have, because there isn't much time really. During this time I also type up the basic framework with timers, initialization and so on - it's a routine task, so I can think about the idea while typing the framework.

I'm the same way! That's one of the reasons I won't use a template framework :)

As far as my timing goes, when I saw the clock strike the end, I commented out the collision detection which I had just added and submitted.

How do you guys feel about not allowing entrants to upload revised versions until after judging is completed?

Simon Parzer
Quote:

How do you guys feel about not allowing entrants to upload revised versions until after judging is completed?

It's a great idea.

Kikaru

Sounds good. Helps keep the games in perspective. :)

[EDIT]
Third Place! Woo! :D

Kibiz0r

Hey, another one scheduled for the 30th. That's the first day of TINS! Does that mean it's like an exponential hack or something?

CGamesPlay

No, it's before the first day of TINS.

BAF

It's a warmup!

Kibiz0r
TINS said:

TINS 2007 will be held from Friday March 30, 12.00 pm GMT, to Monday April 2, 12.00 pm GMT.

MinorHack said:

March 31st at 1:00 am UTC

I fail to see how March 31st is before March 30th.

(they're both the 30th for me, since I'm in -5 GMT)

CGamesPlay

Okay, I seem to have mistaken 12 PM for 12 AM, and then March 31 for March 30. I've moved the competition 1 day closer to avoid collision with TINS. If this means you guys who voted for it can't participate, feel free to propose another one. Personally, I won't be able to play right before TINS starts (10 am March 30 UTC), but if you European people are, you might want to get together on it :)

Kikaru

Compo in 2 8 days. AKA, bump.

CGamesPlay

Today is the 21st, and the competition is on the 30th. It starts in 8 days and 6 hours.

Ron Ofir

Hmmm... What a shame, it's on 4am.

CGamesPlay

Like I said, if you European ones want to have a different one at like 10 am GMT, feel free to propose it.

Kibiz0r

10 AM GMT would even work well for me. I'm generally still up at 5:00 AM here. ;D

CGamesPlay

5 AM where? Are you Central time? Enjoy this.

Kibiz0r

EDT (-5 GMT)

Also, neat. Doesn't beat the convenience of Google, though... ;)

Ron Ofir

Well, 10am still wouldn't be good as I study on Fridays as well.

Kikaru

Oh. Right, got the dates mixed up. ;D

Kibiz0r

Should probably rollover the thread at some point before the next MH.
y/n: ?

CGamesPlay

"rollover"?

Kibiz0r

Eh, make a new thread for the next MinorHack... trying to use some hip terminology and I guess it didn't quite work out... sorry about that.

Edit: Though this one was made with 3 days to go, so I guess it would be out of character to remake it already... I'm just anxious.

LennyLen
Quote:

trying to use some hip terminology and I guess it didn't quite work out

It's just as well for you that it's hip to be square.

Kikaru

Actually, hips are vaguely bean-shaped... sort of... ;)

Thread #590548. Printed from Allegro.cc