Check out my Latest Game!!!

Random irrelevance that just didn't fit into other forums. Talk about anything.

Moderator: Talkative People

User avatar
JS Lemming
Game Developer
Game Developer
Posts: 2383
Joined: Fri May 21, 2004 4:09 pm
Location: C:\CON\CON

Check out my Latest Game!!!

Post by JS Lemming »

YES!!! I did it! I started on this game 4 days ago, and my goal was to finish it before I went off for vacation. I leave tommorrow! Ok, the game is called Space Masters and is a Shootem up style game. This was the hardest game I've ever made, mostly because it dealt so much with math. Anyway, at the main menu, you can choose if you wish to play solo or 2 player. Then you simply choose your ship and enter the chaos! I think I did a really good job with the AI, and their actions are all logical, not random. Just take a close look at their behaviors, and you will see why it was so hard to make. Actually, the finished game took over 1,000 lines of code!

This game also has special power up item things, that appear where a ship exploded. There are 3 items in all:

(E) = Extra Energy/life
(S) = Shield
(R) = Rapid Fire

Don't worry, you have unlimited fuel.

Please! Post what you think of my game. Glitch Reports are also nice. I also added sound in this game, so tell me if you have problems like if it doesn't work or something.

You can find it in the Chaos Productions Section of the site.

http://www.thechaosrift.com/programs/productions.shtml

Enjoy!
Small girl at the harbor wrote:Look Brandon, that crab's got ham!
Guest

Post by Guest »

That was the best home made game I've ever seen in my life. I can't diss it in any way. Holy crap. You're good.

One thing though. That screenshot! :barf:

We REALLY must do something. It soils the greatness of that fantastic game!
User avatar
JS Lemming
Game Developer
Game Developer
Posts: 2383
Joined: Fri May 21, 2004 4:09 pm
Location: C:\CON\CON

Post by JS Lemming »

Yes I know, but I can't figure out a way to make it better. Every time I shrink the image to a reasonable size, it makes it look horrible. Any suggestions?
Small girl at the harbor wrote:Look Brandon, that crab's got ham!
User avatar
Wutai
Chaos Rift God
Chaos Rift God
Posts: 1510
Joined: Sat May 29, 2004 2:30 am
Location: Currently incarcerated.

Post by Wutai »

This is definately the king of multiplayer shooters!

:mike:
This is a joke about unfunny jokes. And bad use of irony.
User avatar
Falco Girgis
Elysian Shadows Team
Elysian Shadows Team
Posts: 10294
Joined: Thu May 20, 2004 2:04 pm
Current Project: Elysian Shadows
Favorite Gaming Platforms: Dreamcast, SNES, NES
Programming Language of Choice: C/++
Location: Studio Vorbis, AL
Contact:

Post by Falco Girgis »

Aight Travis. Your game is UNdeniably a chaos rift masterpiece. Awww... who am I kidding? 'Tis THE Chaos Rift masterpeice. OH OH OH! I just had an idea! I'm going to put it as the new game of the week. That should get a hell of a lot of visitors.

I love the pure hellish mayhem of randomness the game features. Very intense. It is a game that I don't mind getting my ass kicked on.
Every time I shrink the image to a reasonable size, it makes it look horrible. Any suggestions?
Oh yes, this is what I used to do. Enable debug in your blitz environment. Then run your game. When the smaller window is up, Print Screen. Paste in in paint. Shrink it to a reasonable size. I think your game should look good as a gif. If not, use PNG. But whatever you do NO JPGs! :D
User avatar
JS Lemming
Game Developer
Game Developer
Posts: 2383
Joined: Fri May 21, 2004 4:09 pm
Location: C:\CON\CON

Post by JS Lemming »

I am SO MAD!!! I worked really hard on that game.... and it messes up when I try it on my sister's NEW laptop. I mean, it looks right and acts right at the title screen thing, but when you do a solo round, only the 2 player controls will move player 1's ship. GAHHH.... Its like its jammed on 2 player setting. I don't get it, it works perfectly on my compoot.

Please tell me if this is happening to you too! If it is.... grrrrrrr. I guess it's really time to flush blitz down the toilet. I'm moving to graphics on the all respectable C++... so how...
Small girl at the harbor wrote:Look Brandon, that crab's got ham!
User avatar
Falco Girgis
Elysian Shadows Team
Elysian Shadows Team
Posts: 10294
Joined: Thu May 20, 2004 2:04 pm
Current Project: Elysian Shadows
Favorite Gaming Platforms: Dreamcast, SNES, NES
Programming Language of Choice: C/++
Location: Studio Vorbis, AL
Contact:

Post by Falco Girgis »

How do you play 2 player? I'm using Windows XP. No offense, but I'm sure my new computer is like 10X more respectable than your sister's. It runs flawless for me.

As for moving onto C++. I didn't wanna learn OpenGL and junk just yet and I really wanted to do some real console programming. Thats why I stick with Dreamcast. I'll be releasing a game for it soon.

I must tell you though, JS Lemming. From the little experience I've had making a game in C++, it is HARD. Confusion and everything sets in. Look at my source so far. This is my Dreamcast game. Har she is ready to compile. All you can really do is fly around shooting people with bullets that have no affect with the Sonic Theme of little children dying in the background:

Code: Select all

#define _arch_dreamcast 
#include <kos.h> 
#include <png/png.h>

class player { 
public: 
    int x; 
    int y; 
    int direction; 
    pvr_ptr_t pic;
}; 

class bullet { 
public: 
    int x; 
    int y; 
    int active; 
    int direction;
    pvr_ptr_t pic;
}; 

class bullets { 
public: 
    bullet b[12]; 
}bullets; 

pvr_ptr_t bg; 
pvr_ptr_t bulletgfx; 
player sonic[4]; 
int counter = 0; 
int onscreen_bullets = 0;
int bg_s;
int luger_s;

void draw_picture(int player); 
void draw_frame(); 
void get_input(int player); 
void draw_bullet(int a); 
void draw_bg(); 


extern uint8 romdisk_boot[]; 
KOS_INIT_ROMDISK(romdisk_boot); 

int main() { 
    vid_set_mode(DM_640x480, PM_RGB565); 
    pvr_init_defaults(); 

    sonic[0].pic = pvr_mem_malloc(64*64*2); 
    png_to_texture("/rd/sonic.png", sonic[0].pic, PNG_FULL_ALPHA); 
    sonic[0].x = 100; 
    sonic[0].y = 100; 

    sonic[1].pic = pvr_mem_malloc(64*64*2); 
    png_to_texture("/rd/knuckles.png", sonic[1].pic, PNG_FULL_ALPHA); 
    sonic[1].x = 540; 
    sonic[1].y = 100; 

    sonic[2].pic = pvr_mem_malloc(64*64*2); 
    png_to_texture("/rd/tails.png", sonic[2].pic, PNG_FULL_ALPHA); 
    sonic[2].x = 100; 
    sonic[2].y = 380; 

    sonic[3].pic = pvr_mem_malloc(64*64*2); 
    png_to_texture("/rd/shadow.png", sonic[3].pic, PNG_FULL_ALPHA); 
    sonic[3].x = 540; 
    sonic[3].y = 380; 

    for(int e = 0; e<12; e++) {
        bullets.b[e].pic = pvr_mem_malloc(8*8*2);
        png_to_texture("/rd/bullet.png", bullets.b[e].pic, PNG_FULL_ALPHA);
    }
    
    // Load the Background 
    bg = pvr_mem_malloc(512*512*2); 
    png_to_texture("/rd/bg.png", bg, PNG_FULL_ALPHA); 

    while(1) { // infinite loop 
        for(int i = 0; i<4; i++) { 
            get_input(i); // Get input from all 4 players 
        
            if(sonic[i].x > 640) { 
                sonic[i].x = 640; 
            } 
            if(sonic[i].x < 0) { 
                sonic[i].x = 0; 
            } 
            if(sonic[i].y > 480) { 
                sonic[i].y = 480; 
            } 
            if(sonic[i].y < 0) { 
                sonic[i].y = 0; 
            } 
        } 
        
        draw_frame(); 

        counter++; 
        if(counter > 1000) 
            counter = 0; 
    } 

    return 0; 
} 



void draw_picture(int player) { 
    pvr_poly_cxt_t cxt; 
    pvr_poly_hdr_t hdr; 
    pvr_vertex_t vert; 
    pvr_poly_cxt_txr(&cxt,PVR_LIST_TR_POLY,PVR_TXRFMT_ARGB4444,64,64,sonic[player].pic,PVR_FILTER_NONE); 
    pvr_poly_compile(&hdr,&cxt); 
    pvr_prim(&hdr,sizeof(hdr)); 
    vert.argb = PVR_PACK_COLOR(1,1,1,1);    
    vert.oargb = 0; 
    vert.flags = PVR_CMD_VERTEX; 
    vert.x = sonic[player].x - (64/2); 
    vert.y = sonic[player].y - (64/2); 
    vert.z = 5; 
    vert.u = 0.0; 
    vert.v = 0.0; 
    pvr_prim(&vert,sizeof(vert)); 
    vert.x = sonic[player].x + (64/2); 
    vert.y = sonic[player].y - (64/2); 
    vert.z = 5; 
    vert.u = 1.0; 
    vert.v = 0.0; 
    pvr_prim(&vert,sizeof(vert)); 
    vert.x = sonic[player].x - (64/2); 
    vert.y = sonic[player].y + (64/2); 
    vert.z = 5; 
    vert.u = 0.0; 
    vert.v = 1.0; 
    pvr_prim(&vert,sizeof(vert)); 
    vert.x = sonic[player].x + (64/2); 
    vert.y = sonic[player].y + (64/2); 
    vert.z = 5; 
    vert.u = 1.0; 
    vert.v = 1.0; 
    vert.flags = PVR_CMD_VERTEX_EOL; 
    pvr_prim(&vert, sizeof(vert)); 
} 

void draw_frame() { 
    pvr_wait_ready(); 
    pvr_scene_begin();    
    pvr_list_begin(PVR_LIST_OP_POLY); // Non-transparent graphic 

    pvr_list_finish(); 
    pvr_list_begin(PVR_LIST_TR_POLY); // Transparent graphic 

   for(int i=0; i<4; i++){ 
      draw_picture(i); 
   } 

   for(int a=0; a<12; a++) { 
       if(bullets.b[a].active == true) { 
           if(bullets.b[a].direction == 0) // left 
               bullets.b[a].x--; 
               draw_bullet(a); 
               if(bullets.b[a].x < 0) 
                   bullets.b[a].active = false; 
           if(bullets.b[a].direction == 1) // right 
               bullets.b[a].x++; 
               draw_bullet(a); 
               if(bullets.b[a].x > 640) 
                   bullets.b[a].active = false; 
       } 
   } 
   draw_bg(); 

    pvr_list_finish(); 
    pvr_scene_finish(); 
} 

void get_input(int player) { 
    cont_cond_t cond; 
    cont_get_cond(maple_addr(player,0),&cond); 

    if(!(cond.buttons & CONT_DPAD_UP)) { 
        sonic[player].y--; 
    } 
    if(!(cond.buttons & CONT_DPAD_DOWN)) { 
        sonic[player].y++; 
    } 
    if(!(cond.buttons & CONT_DPAD_LEFT)) { 
        sonic[player].x--; 
        sonic[player].direction = 0; 
    } 
    if(!(cond.buttons & CONT_DPAD_RIGHT)) { 
        sonic[player].x++; 
        sonic[player].direction = 1; 
    } 
    if(cond.rtrig > 100) { 
        if(onscreen_bullets < 12) { 
            bullets.b[onscreen_bullets].active = true; 
            bullets.b[onscreen_bullets].direction = sonic[player].direction; 
        } 
    } 
}  

void draw_bullet(int a) { 
    pvr_poly_cxt_t cxt; 
    pvr_poly_hdr_t hdr; 
    pvr_vertex_t vert; 
    pvr_poly_cxt_txr(&cxt,PVR_LIST_TR_POLY,PVR_TXRFMT_ARGB4444,8,8,bullets.b[a].pic,PVR_FILTER_NONE); 
    pvr_poly_compile(&hdr,&cxt); 
    pvr_prim(&hdr,sizeof(hdr)); 
    vert.argb = PVR_PACK_COLOR(1,1,1,1);    
    vert.oargb = 0; 
    vert.flags = PVR_CMD_VERTEX; 
    vert.x = bullets.b[a].x - (8/2); 
    vert.y = bullets.b[a].y - (8/2); 
    vert.z = 5; 
    vert.u = 0.0; 
    vert.v = 0.0; 
    pvr_prim(&vert,sizeof(vert)); 
    vert.x = bullets.b[a].x + (8/2); 
    vert.y = bullets.b[a].y - (8/2); 
    vert.z = 5; 
    vert.u = 1.0; 
    vert.v = 0.0; 
    pvr_prim(&vert,sizeof(vert)); 
    vert.x = bullets.b[a].x - (8/2); 
    vert.y = bullets.b[a].y + (8/2); 
    vert.z = 5; 
    vert.u = 0.0; 
    vert.v = 1.0; 
    pvr_prim(&vert,sizeof(vert)); 
    vert.x = bullets.b[a].x + (8/2); 
    vert.y = bullets.b[a].y + (8/2); 
    vert.z = 5; 
    vert.u = 1.0; 
    vert.v = 1.0; 
    vert.flags = PVR_CMD_VERTEX_EOL; 
    pvr_prim(&vert, sizeof(vert)); 
} 

void draw_bg() { 
    pvr_poly_cxt_t cxt; 
    pvr_poly_hdr_t hdr; 
    pvr_vertex_t vert; 
    pvr_poly_cxt_txr(&cxt,PVR_LIST_TR_POLY,PVR_TXRFMT_ARGB4444,512,512,bg,PVR_FILTER_NONE); 
    pvr_poly_compile(&hdr,&cxt); 
    pvr_prim(&hdr,sizeof(hdr)); 
    vert.argb = PVR_PACK_COLOR(1,1,1,1);    
    vert.oargb = 0; 
    vert.flags = PVR_CMD_VERTEX; 
    vert.x = 0; 
    vert.y = 0; 
    vert.z = 1; 
    vert.u = 0.0; 
    vert.v = 0.0; 
    pvr_prim(&vert,sizeof(vert)); 
    vert.x = 640; 
    vert.y = 0; 
    vert.z = 1; 
    vert.u = 1.0; 
    vert.v = 0.0; 
    pvr_prim(&vert,sizeof(vert)); 
    vert.x = 0; 
    vert.y = 480; 
    vert.z = 1; 
    vert.u = 0.0; 
    vert.v = 1.0; 
    pvr_prim(&vert,sizeof(vert)); 
    vert.x = 640; 
    vert.y = 480; 
    vert.z = 1; 
    vert.u = 1.0; 
    vert.v = 1.0; 
    vert.flags = PVR_CMD_VERTEX_EOL; 
    pvr_prim(&vert, sizeof(vert)); 
}
Lord, look at that source! I expect it to AT LEAST double before this game is done.
User avatar
JS Lemming
Game Developer
Game Developer
Posts: 2383
Joined: Fri May 21, 2004 4:09 pm
Location: C:\CON\CON

Post by JS Lemming »

Ha! That's nothing, want to see what it took just to draw a Ship in my game?

Code: Select all

;Draws Ship with given data
Function DrawShip(x, y, angle, on, r, g, b, hity, Shield)

	;Set Color
	If hity = False
		Color r,g,b
	Else
		Color 255,255,255
	EndIf
	
	;Draw lines that make up the ship	
	Line x,y,(x + (Radius * Cos(angle))),(y + (Radius * Sin(angle)))
	
	Line x + (Radius * Cos(angle)),y + (Radius * Sin(angle)),x + (Radius * Cos(angle+140)),y + (Radius * Sin(angle+140))
	Line x + (Radius * Cos(angle)),y + (Radius * Sin(angle)),x + (Radius * Cos(angle-140)),y + (Radius * Sin(angle-140))

	Line x + (Radius * Cos(angle+140)),y + (Radius * Sin(angle+140)),x,y
	Line x + (Radius * Cos(angle-140)),y + (Radius * Sin(angle-140)),x,y
	
	;If shield true
	If Shield > 0
	
		;Draw blue circle around ship
		Color 0,Rand(100,200),255
		
		Oval (x-Radius)-5,(y-Radius)-5,(Radius*2)+10,(Radius*2)+10, 0
	
	EndIf
	
	
	;Make fire on back if On is true
	If on = True
	
		;Set color to yellow
		Color Rand(200,255),Rand(200,255),0
		
		MidPoint(x,y,x + (Radius * Cos(angle+140)),y + (Radius * Sin(angle+140)))
		
		For i = Rand(-4,4) To 15 Step 1;5
			Line (x - ((Radius-i) * Cos(angle))),(y - ((Radius-i) * Sin(angle))),Midx,Midy
		Next
		
		MidPoint(x,y,x + (Radius * Cos(angle-140)),y + (Radius * Sin(angle-140)))
		
		For i = Rand(-4,4) To 15 Step 1;5
			Line (x - ((Radius-i) * Cos(angle))),(y - ((Radius-i) * Sin(angle))),Midx,Midy
		Next
	
	EndIf
	
End Function
I think I'm ready for a Graphical C++ view.

My next goal is to learn opengl enough to recreate Space Masters.
Small girl at the harbor wrote:Look Brandon, that crab's got ham!
User avatar
Falco Girgis
Elysian Shadows Team
Elysian Shadows Team
Posts: 10294
Joined: Thu May 20, 2004 2:04 pm
Current Project: Elysian Shadows
Favorite Gaming Platforms: Dreamcast, SNES, NES
Programming Language of Choice: C/++
Location: Studio Vorbis, AL
Contact:

Post by Falco Girgis »

Travis, travis. I think you know enough programming languages: C++, Javascript, Blitz, I guess you could even call HTML one.

Why do you need to start mucking around in OpenGL? That is what I'm doing AFTER the Dreamcast. I just think you're jumping WAY far ahead. Why don't you give console programming a try? Just bust out a BroadBand Adapter for that Lame Cube of yours and code away.

The 'cube doesn't have the kind of utilities and tools that the DC has, but there should be some similarity.
User avatar
JS Lemming
Game Developer
Game Developer
Posts: 2383
Joined: Fri May 21, 2004 4:09 pm
Location: C:\CON\CON

Post by JS Lemming »

I can always count on you for a laugh can't I. I'll never develope for the cube... I think opengl is my best choice.

P.S. Posting from a random hotel.
Small girl at the harbor wrote:Look Brandon, that crab's got ham!
Guest

Post by Guest »

This is definately the king of multiplayer shooters!
*deletes his under construction two player shooter, and bows to the blitz king*

:worship: :worship: :worship: :worship: :worship: :worship: :worship:
Guest

Post by Guest »

I can always count on you for a laugh can't I. I'll never develope for the cube... I think opengl is my best choice.
Why not program the DC? 4 people on THIS forum just got a DC within this week, so your programs could be used by many. And you and SS could be partners in learning it or something.
Guest

Post by Guest »

:thumbsup: :cheers: :hitit: :!!!!:
thats a great gme there. when r you ppl going to make it the game of the week? this game flippin ownz that ld game of the wekk.
User avatar
JS Lemming
Game Developer
Game Developer
Posts: 2383
Joined: Fri May 21, 2004 4:09 pm
Location: C:\CON\CON

Post by JS Lemming »

Hmm... I did some scouting for 2d opengl and got a lot of warnings. they said opengl is not intended for 2d, it was streamlined for 3d. Which means it would probably be easier to make 3d games then it is 2d... I'm not ready for 3d yet. But, they did lead me to SDL, a C++ API library for only 2d. So, I will either go with that or still use blitz.

I will still use opengl someday, but after I'm done with 2d. I guess that's good though because that way, Super Sonic and me can go 3d at the same time. He can continue console game programming, and me random PC game programming. :mrgreen:
Small girl at the harbor wrote:Look Brandon, that crab's got ham!
User avatar
Falco Girgis
Elysian Shadows Team
Elysian Shadows Team
Posts: 10294
Joined: Thu May 20, 2004 2:04 pm
Current Project: Elysian Shadows
Favorite Gaming Platforms: Dreamcast, SNES, NES
Programming Language of Choice: C/++
Location: Studio Vorbis, AL
Contact:

Post by Falco Girgis »

I will still use opengl someday, but after I'm done with 2d. I guess that's good though because that way, Super Sonic and me can go 3d at the same time. He can continue console game programming, and me random PC game programming. :mrgreen:
Yeah, that is a great idea. I will DEFINATELY learn OpenGL one day...
Post Reply