Allegro.cc - Online Community

Allegro.cc Forums » Game Design & Concepts » Frames

This thread is locked; no one can reply to it. rss feed Print
Frames
AleX-G Squadron
Member #13,593
October 2011
avatar

When i try to create a timer using a counter, whatever button i type in, it will generate an extra frame.
If i try to move the mouse, it increments too.
I find it using a variable and incrementing it.
The code for the timer is this one:

#SelectExpand
1bool quit = false; 2const FPS = 80; 3int count = 0; 4ALLEGRO_TIMER *timer = NULL; 5timer = al_create_timer(1.0 / FPS); 6al_start_timer(timer); 7 8while(!quit) 9{ 10//create events 11count++; 12//create a font and display it 13}

www.anothergames.com

Neil Walker
Member #210
April 2000
avatar

Sorry, I have no idea what you are talking about.

How about posting all the code, or the parts of the code that show the error.

Neil.
MAME Cabinet Blog / AXL LIBRARY (a games framework) / AXL Documentation and Tutorial

wii:0356-1384-6687-2022, kart:3308-4806-6002. XBOX:chucklepie

AleX-G Squadron
Member #13,593
October 2011
avatar

It is not that it doesnt work. If you try this program, when you move your mouse, the frames will increment much faster.
The question is why?

#SelectExpand
1#include <allegro5\allegro.h> 2#include <allegro5\allegro_primitives.h> 3#include <allegro5\allegro_image.h> 4#include <allegro5\allegro_ttf.h> 5#include <allegro5\allegro_font.h> 6 7enum BUTON{A,D,S,W}; 8 9const int width = 800, height = 600, FPS = 1; 10 11int main() 12{ 13 al_init(); 14 al_init_image_addon(); 15 al_init_primitives_addon(); 16 al_init_font_addon(); 17 al_init_ttf_addon(); 18 19 al_install_keyboard(); 20 al_install_mouse(); 21 22 bool quit = false; 23 bool buton[4] = {false,false,false,false}; 24 25 int x = width / 2; 26 int y = height / 2; 27 28 int count = 0; 29 30 ALLEGRO_DISPLAY *window = al_create_display(width, height); 31 ALLEGRO_BITMAP *icon = al_load_bitmap("image/1.png"); 32 ALLEGRO_FONT *font16 = al_load_ttf_font("fonts/1.ttf", 86, ALLEGRO_ALIGN_CENTRE); 33 ALLEGRO_TIMER *timer = NULL; 34 ALLEGRO_EVENT_QUEUE *event = NULL; 35 36 al_set_display_icon(window, icon); 37 al_set_window_title(window, "Game programming"); 38 39 timer = al_create_timer(1.0 / FPS); 40 event = al_create_event_queue(); 41 42 al_register_event_source(event, al_get_keyboard_event_source()); 43 al_register_event_source(event, al_get_mouse_event_source()); 44 al_register_event_source(event, al_get_display_event_source(window)); 45 al_register_event_source(event, al_get_timer_event_source(timer)); 46 47 al_flip_display(); 48 al_hide_mouse_cursor(window); 49 50 al_start_timer(timer); 51 52 while(!quit) 53 { 54 ALLEGRO_EVENT e; 55 al_wait_for_event(event, &e); 56 57 count++; 58 59 60 if(e.type == ALLEGRO_EVENT_KEY_DOWN) 61 { 62 switch(e.keyboard.keycode) 63 { 64 case ALLEGRO_KEY_A: 65 buton[A] = true; 66 break; 67 68 case ALLEGRO_KEY_S: 69 buton[S] = true; 70 break; 71 72 case ALLEGRO_KEY_D: 73 buton[D] = true; 74 break; 75 76 case ALLEGRO_KEY_W: 77 buton[W] = true; 78 break; 79 80 case ALLEGRO_KEY_ESCAPE: 81 quit = true; 82 } 83 } 84 85 else if(e.type == ALLEGRO_EVENT_KEY_UP) 86 { 87 switch(e.keyboard.keycode) 88 { 89 case ALLEGRO_KEY_A: 90 buton[A] = false; 91 break; 92 93 case ALLEGRO_KEY_S: 94 buton[S] = false; 95 break; 96 97 case ALLEGRO_KEY_D: 98 buton[D] = false; 99 break; 100 101 case ALLEGRO_KEY_W: 102 buton[W] = false; 103 break; 104 } 105 } 106 107 else if(e.type == ALLEGRO_EVENT_DISPLAY_CLOSE) 108 { 109 quit = true; 110 } 111 112 else if(e.type == ALLEGRO_EVENT_MOUSE_AXES) 113 { 114 x = e.mouse.x; 115 y = e.mouse.y; 116 } 117 118 119 x -= buton[A] * 10; 120 x += buton[D] * 10; 121 y -= buton[W] * 10; 122 y += buton[S] * 10; 123 124 al_draw_rectangle(x-15,y-15,x+15,y+15,al_map_rgb(0,255,0), 3.0); 125 al_draw_textf(font16, al_map_rgb(0,255,0), 300, 100, ALLEGRO_ALIGN_CENTRE, "Total frames: %i", count); 126 127 al_flip_display(); 128 al_clear_to_color(al_map_rgb(0,0,0)); 129 130 } 131 132 al_destroy_bitmap(icon); 133 al_destroy_display(window); 134 135}

www.anothergames.com

Arthur Kalliokoski
Second in Command
February 2005
avatar

I take the previous edit back, you need to set up a queue.

They all watch too much MSNBC... they get ideas.

J-Gamer
Member #12,491
January 2011
avatar

That code increments counter at each event. Mouse movements generate lots of events, so it is to be expected that counter increases faster.

" There are plenty of wonderful ideas in The Bible, but God isn't one of them." - Derezo
"If your body was a business, thought would be like micro-management and emotions would be like macro-management. If you primarily live your life with emotions, then you are prone to error on the details. If you over-think things all the time you tend to lose scope of priorities." - Mark Oates

CodeStepper
Member #14,495
August 2012
avatar

Use this:

#SelectExpand
1bool quit = false; 2 3redraw = true; 4 5const FPS = 80; 6int count = 0; 7ALLEGRO_TIMER *timer = NULL; 8ALLEGRO_EVENT_QUEUE *queue = al_create_event_queue( ); 9timer = al_create_timer(1.0 / FPS); 10al_start_timer(timer); 11 12while(!quit) 13{ 14//create events 15// if timer event "tick", set redraw to true 16if( event.type == ALLEGRO_EVENT_TIMER ) 17redraw = true; 18 19// On every FPS turn off redraw and wait for timer event 20if( al_event_queue_empty( queue ) && redraw ) 21count++, redraw = false; 22 23//create a font and display it 24}

This will stop events other than timer

In your code do this:

#SelectExpand
1#include <allegro5\allegro.h> 2#include <allegro5\allegro_primitives.h> 3#include <allegro5\allegro_image.h> 4#include <allegro5\allegro_ttf.h> 5#include <allegro5\allegro_font.h> 6 7enum BUTON{A,D,S,W}; 8 9const int width = 800, height = 600, FPS = 1; 10 11int main() 12{ 13 al_init(); 14 al_init_image_addon(); 15 al_init_primitives_addon(); 16 al_init_font_addon(); 17 al_init_ttf_addon(); 18 19 al_install_keyboard(); 20 al_install_mouse(); 21 22 bool quit = false; 23 bool buton[4] = {false,false,false,false}; 24 25 // Redraw 26 // This will stop other events 27 bool redraw = false; 28 29 int x = width / 2; 30 int y = height / 2; 31 32 int count = 0; 33 34 ALLEGRO_DISPLAY *window = al_create_display(width, height); 35 ALLEGRO_BITMAP *icon = al_load_bitmap("image/1.png"); 36 ALLEGRO_FONT *font16 = al_load_ttf_font("fonts/1.ttf", 86, ALLEGRO_ALIGN_CENTRE); 37 ALLEGRO_TIMER *timer = NULL; 38 ALLEGRO_EVENT_QUEUE *event = NULL; 39 40 al_set_display_icon(window, icon); 41 al_set_window_title(window, "Game programming"); 42 43 timer = al_create_timer(1.0 / FPS); 44 event = al_create_event_queue(); 45 46 al_register_event_source(event, al_get_keyboard_event_source()); 47 al_register_event_source(event, al_get_mouse_event_source()); 48 al_register_event_source(event, al_get_display_event_source(window)); 49 al_register_event_source(event, al_get_timer_event_source(timer)); 50 51 al_flip_display(); 52 al_hide_mouse_cursor(window); 53 54 al_start_timer(timer); 55 56 while(!quit) 57 { 58 ALLEGRO_EVENT e; 59 al_wait_for_event(event, &e); 60 61 // Better to do this on SWITCH 62 switch(e.type) 63 { 64 case ALLEGRO_EVENT_KEY_DOWN: 65 switch(e.keyboard.keycode) 66 { 67 case ALLEGRO_KEY_A: 68 buton[A] = true; 69 break; 70 71 case ALLEGRO_KEY_S: 72 buton[S] = true; 73 break; 74 75 case ALLEGRO_KEY_D: 76 buton[D] = true; 77 break; 78 79 case ALLEGRO_KEY_W: 80 buton[W] = true; 81 break; 82 83 case ALLEGRO_KEY_ESCAPE: 84 quit = true; 85 } 86 break; 87 88 case ALLEGRO_EVENT_KEY_UP: 89 switch(e.keyboard.keycode) 90 { 91 case ALLEGRO_KEY_A: 92 buton[A] = false; 93 break; 94 95 case ALLEGRO_KEY_S: 96 buton[S] = false; 97 break; 98 99 case ALLEGRO_KEY_D: 100 buton[D] = false; 101 break; 102 103 case ALLEGRO_KEY_W: 104 buton[W] = false; 105 break; 106 } 107 break; 108 109 case ALLEGRO_EVENT_DISPLAY_CLOSE: 110 quit = true; 111 break; 112 113 case ALLEGRO_EVENT_MOUSE_AXES: 114 x = e.mouse.x; 115 y = e.mouse.y; 116 break; 117 // On timer "tick" event, turn on redraw 118 case ALLEGRO_EVENT_TIMER: 119 redraw = true; 120 break; 121 } 122 123 // If you want wait only for timer event 124 if( redraw ) 125 count++; 126 127 128 // Waiting for timer event and empty event queue 129 if( al_is_event_queue_empty( event ) && redraw ) 130 { 131 // Turn off redraw 132 redraw = false; 133 x -= buton[A] * 10; 134 x += buton[D] * 10; 135 y -= buton[W] * 10; 136 y += buton[S] * 10; 137 138 al_draw_rectangle(x-15,y-15,x+15,y+15,al_map_rgb(0,255,0), 3.0); 139 al_draw_textf(font16, al_map_rgb(0,255,0), 300, 100, ALLEGRO_ALIGN_CENTRE, "Total frames: %i", count); 140 141 al_flip_display(); 142 al_clear_to_color(al_map_rgb(0,0,0)); 143 } 144 145 } 146 147 al_destroy_bitmap(icon); 148 al_destroy_display(window); 149 150}

Luiji99
Member #12,254
September 2010

Alternatively you could move your frame drawing code into your timer event handler.

Programming should be fun. That's why I hate Java.

AleX-G Squadron
Member #13,593
October 2011
avatar

Thanks for the help!
The square now runs incredibly smoother!
As i was making some practice by learning all the program by heart... I found a very nice program
Showing coordinates of the square! :)

This is it with all mods codestepper gave

#SelectExpand
1#include <allegro5\allegro.h> 2#include <allegro5\allegro_primitives.h> 3#include <allegro5\allegro_image.h> 4#include <allegro5\allegro_ttf.h> 5#include <allegro5\allegro_font.h> 6 7enum BUTON{A,D,S,W}; 8 9const int width = 800, height = 600, FPS = 80; 10 11int main() 12{ 13 al_init(); 14 al_init_image_addon(); 15 al_init_primitives_addon(); 16 al_init_font_addon(); 17 al_init_ttf_addon(); 18 19 al_install_keyboard(); 20 al_install_mouse(); 21 22 bool quit = false; 23 bool buton[4] = {false,false,false,false}; 24 25 // Redraw 26 // This will stop other events 27 bool redraw = false; 28 29 int x = width / 2; 30 int y = height / 2; 31 32 int count = 0; 33 34 ALLEGRO_DISPLAY *window = al_create_display(width, height); 35 ALLEGRO_BITMAP *icon = al_load_bitmap("image/1.png"); 36 ALLEGRO_FONT *font16 = al_load_ttf_font("fonts/1.ttf", 86, ALLEGRO_ALIGN_CENTRE); 37 ALLEGRO_TIMER *timer = NULL; 38 ALLEGRO_EVENT_QUEUE *event = NULL; 39 40 al_set_display_icon(window, icon); 41 al_set_window_title(window, "Game programming"); 42 43 timer = al_create_timer(1.0 / FPS); 44 event = al_create_event_queue(); 45 46 al_register_event_source(event, al_get_keyboard_event_source()); 47 al_register_event_source(event, al_get_mouse_event_source()); 48 al_register_event_source(event, al_get_display_event_source(window)); 49 al_register_event_source(event, al_get_timer_event_source(timer)); 50 51 al_flip_display(); 52 al_hide_mouse_cursor(window); 53 54 al_start_timer(timer); 55 56 while(!quit) 57 { 58 ALLEGRO_EVENT e; 59 al_wait_for_event(event, &e); 60 61 // Better to do this on SWITCH 62 switch(e.type) 63 { 64 case ALLEGRO_EVENT_KEY_DOWN: 65 switch(e.keyboard.keycode) 66 { 67 case ALLEGRO_KEY_A: 68 buton[A] = true; 69 break; 70 71 case ALLEGRO_KEY_S: 72 buton[S] = true; 73 break; 74 75 case ALLEGRO_KEY_D: 76 buton[D] = true; 77 break; 78 79 case ALLEGRO_KEY_W: 80 buton[W] = true; 81 break; 82 83 case ALLEGRO_KEY_ESCAPE: 84 quit = true; 85 } 86 break; 87 88 case ALLEGRO_EVENT_KEY_UP: 89 switch(e.keyboard.keycode) 90 { 91 case ALLEGRO_KEY_A: 92 buton[A] = false; 93 break; 94 95 case ALLEGRO_KEY_S: 96 buton[S] = false; 97 break; 98 99 case ALLEGRO_KEY_D: 100 buton[D] = false; 101 break; 102 103 case ALLEGRO_KEY_W: 104 buton[W] = false; 105 break; 106 } 107 break; 108 109 case ALLEGRO_EVENT_DISPLAY_CLOSE: 110 quit = true; 111 break; 112 113 case ALLEGRO_EVENT_MOUSE_AXES: 114 x = e.mouse.x; 115 y = e.mouse.y; 116 break; 117 // On timer "tick" event, turn on redraw 118 case ALLEGRO_EVENT_TIMER: 119 redraw = true; 120 break; 121 } 122 123 // If you want wait only for timer event 124 if( redraw ) 125 count++; 126 127 128 // Waiting for timer event and empty event queue 129 if( al_is_event_queue_empty( event ) && redraw ) 130 { 131 // Turn off redraw 132 redraw = false; 133 x -= buton[A] * 10; 134 x += buton[D] * 10; 135 y -= buton[W] * 10; 136 y += buton[S] * 10; 137 138 al_draw_rectangle(x-15,y-15,x+15,y+15,al_map_rgb(0,255,0), 3.0); 139 140 //Coordinates 141 al_draw_textf(font16, al_map_rgb(0,255,0), 300, 100, ALLEGRO_ALIGN_CENTRE, "Coordinates X: %i Y: %i", x, y); 142 143 al_flip_display(); 144 al_clear_to_color(al_map_rgb(0,0,0)); 145 } 146 147 } 148 149 al_destroy_bitmap(icon); 150 al_destroy_display(window); 151 152}

www.anothergames.com

Thomas Fjellstrom
Member #476
June 2000
avatar

Personally I'd put the count++ inside the if() at the end there. Since a frame isn't actually drawn till that if is entered, it's more accurate to only count frames if that code has executed.

But then you're not doing anything with the count variable at the moment anyway, so its a moot point.

--
Thomas Fjellstrom - [website] - [email] - [Allegro Wiki] - [Allegro TODO]
"If you can't think of a better solution, don't try to make a better solution." -- weapon_S
"The less evidence we have for what we believe is certain, the more violently we defend beliefs against those who don't agree" -- https://twitter.com/neiltyson/status/592870205409353730

AleX-G Squadron
Member #13,593
October 2011
avatar

Since i added FPS, what is the lowest and highest FPS the eye can see?
I believe that 80 is perfect, because when i played sometimes in 60 it wasnt that nicely smooth.

Also, i learned that only with 4 lines of code the game becomes smoother

bool redraw = false;
redraw = true;
if(redraw){
redraw = false;}

And normally you need to put them in logic order because like this is a waste.

With the count variable, since it is put count++, i would be greatly amazed of not doing anything like you said, as it increments.
But normally, if you mean for the coordinates, i know it is a waste, but i had no time to delete the timer

www.anothergames.com

Luiji99
Member #12,254
September 2010

I'm pretty sure the human eye's not supposed to be able to perceive more than 24 FPS or so...

Programming should be fun. That's why I hate Java.

l j
Member #10,584
January 2009
avatar

Luiji99 said:

I'm pretty sure the human eye's not supposed to be able to perceive more than 24 FPS or so...

I'm pretty sure that's bullshit.

Movies (and games?) have motion blur all over to look smoother.
Because I think someone is going to say, "But movies are played back at 24 fps and they look smooth!".

AleX-G Squadron
Member #13,593
October 2011
avatar

I mean a FPS about gaming, because even if human eye cannot perceive 1 FPS,
human brain can...

www.anothergames.com

Luiji99
Member #12,254
September 2010

Alex-G: if the eye wasn't able to accept more than two frames per second, the brain wouldn't get more than two frames per second, thus the brain would not be able to process more than two frames per second, thus your statement is nonsensical.

taron: It would appear you're correct. I've got the chance to look it up, and (annoyingly) some sources say 10 FPS and others say hundreds. Some resources say it depends completely on the object being perceived, its motion and brightness. I.e. slow-moving fog doesn't need as many FPS as a fast-moving bullet.

Though, I found information that states Halo 3 is locked at 30 FPS. AFAIK that game looks relatively smooth. ???

Programming should be fun. That's why I hate Java.

AleX-G Squadron
Member #13,593
October 2011
avatar

If you see a frame(a photo) for each second, than the brain can perceive it.
(I mean you can calculate the box path if you know two movements of the box, but that said it is totally absolute, not relative)
It is just like in math, where if you find 2 points, you get the whole plane.
(You mean if you stand still the brain wont perceive you!)

I tried this program and compared 30 with 80 and it was a nice difference,
but i guess that 30 is quite normal

www.anothergames.com

Luiji99
Member #12,254
September 2010

This is the flaw I see in using ALLEGRO_TIMER for logic: you can't max out FPS so you have to make sure that you use a high enough tick rate so that you don't notice anything.

Programming should be fun. That's why I hate Java.

gnolam
Member #2,030
March 2002
avatar

The limiting factor isn't what the eye can see (24 FPS is indeed utter bollocks) but what the user's monitor can and will render. There's no use rendering at a higher frequency than the user's refresh rate.

--
Move to the Democratic People's Republic of Vivendi Universal (formerly known as Sweden) - officially democracy- and privacy-free since 2008-06-18!

AleX-G Squadron
Member #13,593
October 2011
avatar

This is a better version of the coordinates version without the counter and with a nice "player" name ;)

I wanted to ask if anyone of you on this forum, has thought of creating a game together in a post, even thought it could sound silly...
So each member can add what he thinks is better like in github

#SelectExpand
1#include <allegro5\allegro.h> 2#include <allegro5\allegro_primitives.h> 3#include <allegro5\allegro_image.h> 4#include <allegro5\allegro_ttf.h> 5#include <allegro5\allegro_font.h> 6 7enum BUTON{A,S,D,W}; 8 9const int width = 800, height = 600, FPS = 60; 10 11int main() 12{ 13 al_init(); 14 al_init_primitives_addon(); 15 al_init_image_addon(); 16 al_init_font_addon(); 17 al_init_ttf_addon(); 18 19 al_install_keyboard(); 20 al_install_mouse(); 21 22 int x = width / 2; 23 int y = height / 2; 24 25 bool quit = false; 26 bool redraw = false; 27 bool buton[4] = {false,false,false,false}; 28 29 ALLEGRO_DISPLAY *window = al_create_display(width, height); 30 ALLEGRO_BITMAP *icon = al_load_bitmap("image/1.png"); 31 ALLEGRO_FONT *font16 = al_load_ttf_font("fonts/1.ttf", 80, ALLEGRO_ALIGN_CENTRE); 32 ALLEGRO_TIMER *timer = NULL; 33 ALLEGRO_EVENT_QUEUE *event = NULL; 34 35 36 timer = al_create_timer(1.0 / FPS); 37 event = al_create_event_queue(); 38 39 al_register_event_source(event, al_get_keyboard_event_source()); 40 al_register_event_source(event, al_get_mouse_event_source()); 41 al_register_event_source(event, al_get_display_event_source(window)); 42 al_register_event_source(event, al_get_timer_event_source(timer)); 43 44 al_set_display_icon(window, icon); 45 al_set_window_title(window, "Game programming"); 46 47 al_flip_display(); 48 49 al_hide_mouse_cursor(window); 50 51 al_start_timer(timer); 52 53 while(!quit) 54 { 55 ALLEGRO_EVENT e; 56 al_wait_for_event(event, &e); 57 58 switch(e.type) 59 { 60 case ALLEGRO_EVENT_KEY_DOWN: 61 switch(e.keyboard.keycode) 62 { 63 case ALLEGRO_KEY_A: 64 buton[A] = true; 65 break; 66 67 case ALLEGRO_KEY_S: 68 buton[S] = true; 69 break; 70 71 case ALLEGRO_KEY_D: 72 buton[D] = true; 73 break; 74 75 case ALLEGRO_KEY_W: 76 buton[W] = true; 77 break; 78 79 case ALLEGRO_KEY_ESCAPE: 80 quit = true; 81 } 82 } 83 84 switch(e.type) 85 { 86 case ALLEGRO_EVENT_KEY_UP: 87 switch(e.keyboard.keycode) 88 { 89 case ALLEGRO_KEY_A: 90 buton[A] = false; 91 break; 92 93 case ALLEGRO_KEY_D: 94 buton[D] = false; 95 break; 96 97 case ALLEGRO_KEY_S: 98 buton[S] = false; 99 break; 100 101 case ALLEGRO_KEY_W: 102 buton[W] = false; 103 break; 104 } 105 } 106 107 if(e.type == ALLEGRO_EVENT_DISPLAY_CLOSE) 108 { 109 quit = true; 110 } 111 112 switch(e.type) 113 { 114 case ALLEGRO_EVENT_MOUSE_AXES: 115 x = e.mouse.x; 116 y = e.mouse.y; 117 } 118 119 if(e.type == ALLEGRO_EVENT_TIMER) 120 { 121 redraw = true; 122 x -= buton[A] * 10; 123 x += buton[D] * 10; 124 y -= buton[W] * 10; 125 y += buton[S] * 10; 126 127 } 128 129 if(redraw && al_event_queue_is_empty(event)) 130 { 131 redraw = false; 132 133 al_draw_rectangle(x-15,y-15,x+15,y+15,al_map_rgb(0,255,0),3.0); 134 135 al_draw_textf(font16, al_map_rgb(255,0,0), 300, 100, ALLEGRO_ALIGN_CENTRE, "Coordinates X: %i Y: %i", x, y); 136 al_draw_textf(font16, al_map_rgb(0,0,255), x,y, ALLEGRO_ALIGN_CENTRE, "Player"); 137 138 al_flip_display(); 139 al_clear_to_color(al_map_rgb(0,0,0)); 140 } 141 142 } 143 al_destroy_bitmap(icon); 144 al_destroy_display(window); 145}

www.anothergames.com

Thomas Fjellstrom
Member #476
June 2000
avatar

gnolam said:

The limiting factor isn't what the eye can see (24 FPS is indeed utter bollocks) but what the user's monitor can and will render. There's no use rendering at a higher frequency than the user's refresh rate.

^^^ That.

--
Thomas Fjellstrom - [website] - [email] - [Allegro Wiki] - [Allegro TODO]
"If you can't think of a better solution, don't try to make a better solution." -- weapon_S
"The less evidence we have for what we believe is certain, the more violently we defend beliefs against those who don't agree" -- https://twitter.com/neiltyson/status/592870205409353730

Fishcake
Member #8,704
June 2007
avatar

I wanted to ask if anyone of you on this forum, has thought of creating a game together in a post, even thought it could sound silly...
So each member can add what he thinks is better like in github

I think there has been several attempts to do such project here in Allegro. I found this one after searching for "project Monday". And I'm pretty sure I came across a project where everyone takes turn contributing exactly one line of code (or several), though I couldn't find it. I wonder what happened to that project.. :-/

AleX-G Squadron
Member #13,593
October 2011
avatar

Must see video... i accidentally found it!
http://www.youtube.com/watch?v=SoHeWgLvlXI&feature=related

www.anothergames.com

Luiji99
Member #12,254
September 2010

gnolam: yeah, that sounds about right. I think I threw some factoids into a vat and smelted bullshit.

Programming should be fun. That's why I hate Java.

Go to: