Page 1 of 2
Check out my Latest Game!!!
Posted: Wed Jun 23, 2004 5:32 pm
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!
Posted: Wed Jun 23, 2004 5:45 pm
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!
Posted: Wed Jun 23, 2004 7:05 pm
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?
Posted: Wed Jun 23, 2004 11:54 pm
by Wutai
This is definately the king of multiplayer shooters!
:mike:
Posted: Thu Jun 24, 2004 9:19 am
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
Posted: Thu Jun 24, 2004 10:59 am
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...
Posted: Thu Jun 24, 2004 11:10 am
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.
Posted: Thu Jun 24, 2004 3:04 pm
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.
Posted: Thu Jun 24, 2004 4:58 pm
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.
Posted: Fri Jun 25, 2004 12:21 pm
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.
Posted: Fri Jun 25, 2004 4:55 pm
by Guest
Posted: Fri Jun 25, 2004 4:59 pm
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.
Posted: Fri Jun 25, 2004 10:45 pm
by Guest
: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.
Posted: Sat Jun 26, 2004 9:10 am
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.
Posted: Sat Jun 26, 2004 10:44 am
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.
Yeah, that is a great idea. I will DEFINATELY learn OpenGL one day...