Classic Pong v1.0

Community Forums/Showcase/Classic Pong v1.0

darklordz(Posted 2003) [#1]
This is my final Pong version
featuring :
- SinglePlayer
- 2 Player
- MultiPlayer
- GhostMode

Added ScreenFX
GameSkins

and heaps more.
Some Screenies of the Blue Skin.




download here


googlemesilly(Posted 2003) [#2]
cool thanks darklordz !
feedback comin' soon !


darklordz(Posted 2003) [#3]
Imma Waitin...


googlemesilly(Posted 2003) [#4]
Just played it !
It's slick ! :)
It's very 'new agey' with the circles and
music ! cool ! :) better than i thought it would be ...
I thought it would be cool if you could control
the paddle with your mouse as well, it seems tight
to have to use the keyboard ...
did you do the music yourself ? i like the sounds
and the wavey effects ... usually i'd say pong was
a boring game, but this is a cool new spin ! :)


darklordz(Posted 2003) [#5]
@Sunshine Dreamer >
look @ ur start menu there is a link to a config.exe tool. Use that to configure gfx, sound, controll and multiplayer options.....

l8tr.

so mouse / joystick / keyboard all = possible....


Warren(Posted 2003) [#6]
I really like the overall look of it, although I wish that config stuff was inside the game. Feels hokey to be in a seperate EXE like that.

I had some massive slowdowns whenever the ring effects would be playing. Whenever they play, the game just bottoms out the framerate, even at 640x480x16. I have a dual processor Athlon machine with 1GB of RAM and a Radeon 9700 ... not sure what the deal is. :P

Cool game concept though ...


Grisu(Posted 2003) [#7]
2.45 MB for a pong game?

*Grisu takes out his C64 and plays a round of classic pong*


googlemesilly(Posted 2003) [#8]
thanks darklordz :)


darklordz(Posted 2003) [#9]
@Grisu > Most of it is music....
@EpicBoy > I coded the CFG Util because it makes it much easier to code. SO i don't need to code an entire interface witch is a tedious task. Manu games nowadays have a external cfg util...


Warren(Posted 2003) [#10]
I coded the CFG Util because it makes it much easier to code. SO i don't need to code an entire interface witch is a tedious task. Manu games nowadays have a external cfg util...

I understand that it's easier, but that doesn't mean it's the right thing to do. :)

BTW, which games are you playing that require external config programs? I've only played a handful over my entire gaming life and it was annoying every single time.

Now, if you aren't planning on selling this shareware or anything then I agree, the external config program is fine. But if you're going to try and sell this eventually, an in-game GUI is really required.


darklordz(Posted 2003) [#11]
I havent tought of selling games as sutch but with my TTT project comming soon im thinking of trying to get that published. Eventough it's a small and non-conventional simplistic game...


googlemesilly(Posted 2003) [#12]
some games these days do have external configs.
i think it's ok if it makes the main program smaller.
alot of things you only need to set up once anyway
so an external config would be good. other things
that people would want to fiddle with alot could
be used in the main program.

that's my 5 cents worth ... lol


Foppy(Posted 2003) [#13]
I like the stylish presentation a lot! HOWEVER. ;) I have the same problem as what EpicBoy described above; the game slows down very much when the circle effect is happening. My guess would be that there are simply too much particles being created and moving away at that moment. It is especially bad when the ball gets stuck behind a pad, which sometimes happens; it collides continuously and thus an enormous amount of dots is created! Maybe make the dots smaller, reduce their amount, and make them disappear after a very short while. The effect will be less spectacular but it will not slow the game down as much. Or maybe, if you didn't have this problem on your own computer, include an option to switch the effect off or to turn it down a little bit.

Good work completing a game!


darklordz(Posted 2003) [#14]
@Foppy, You are right. I was hoping someone might helo me create a 2d water like effect. (Like your ball was searing over water...(realistic)). If that could be done. Then... well then wow...


Foppy(Posted 2003) [#15]
I don't know if this is of any help, but I once wrote some code to get a (what I thought was a) sonic boom effect. It also looks a bit like a water ripple effect. It is done by using copyRect to copy a piece of the background to a spot a bit further on, giving the ripple effect. This is done for a number of spots that move outwards in a circle.

However I noticed in my own game that this effect is also quite heavy (probably because of all the calls to copyRect). (The trick is to make the objects move fast or restrict their life time, and especially their size.) Otherwise just see it as a funny demo. The code still needs a bitmap (with some image on it) as large as the screen ("somebitmap.png").

; "sonic boom" effect demo by Foppy

Const SCREENWIDTH  = 800
Const SCREENHEIGHT = 600

Graphics(SCREENWIDTH,SCREENHEIGHT)
SetBuffer(BackBuffer())

Global g_gfx_background = LoadImage("somebitmap.png")

; this is the distance used when copying from source to target location (see sonic draw function)
Const DISPLACEMENT = 4

;#####################################################################################################
; SONIC TYPE DEFINITION AND RELATED FUNCTIONS
;#####################################################################################################

Type SONIC
	Field f_x#
	Field f_y#
	Field f_size
	Field f_dx#
	Field f_dy#
	Field f_life
End Type

Function SONIC_launch (p_x#,p_y#,p_size,p_dx#,p_dy#,p_life)
	sonic.SONIC  = New SONIC
	
	sonic\f_x    = p_x
	sonic\f_y    = p_y
	sonic\f_size = p_size
	sonic\f_dx   = p_dx
	sonic\f_dy   = p_dy
	sonic\f_life = p_life
End Function

Function SONIC_actionAll ()
	For sonic.SONIC  = Each SONIC
		sonic\f_x    = sonic\f_x + sonic\f_dx
		sonic\f_y    = sonic\f_y + sonic\f_dy
		sonic\f_life = sonic\f_life - 1
		If (sonic\f_life <= 0) Then
			Delete(sonic)
		End If
	Next
End Function

Function SONIC_drawAll ()
	For sonic.SONIC = Each SONIC
	
		; using copyRect() we copy what is under the sonic object to a
		; spot a bit further away, in the direction the object is moving
		
		sourceX# = sonic\f_x
		sourceY# = sonic\f_y
		targetX# = sourceX + sonic\f_dx * DISPLACEMENT
		targetY# = sourceY + sonic\f_dy * DISPLACEMENT
		
		CopyRect(sourceX,sourceY,sonic\f_size,sonic\f_size,targetX,targetY)
	Next
End Function

Function SONIC_launchWave (p_centerX,p_centerY,p_count,p_size,p_life,p_speed#)
	x# = p_centerX - p_size/2.0
	y# = p_centerY - p_size/2.0
	
	; here we launch a collection of sonics from one location, each of them
	; moving in a different (calculated) direction, so that we get an outwards
	; moving circle
	
	For i = 1 To p_count
		angle# = 360.0/p_count * i
		dx#    = Cos(angle) * p_speed
		dy#    = Sin(angle) * p_speed
		
		SONIC_launch(x,y,p_size,dx,dy,p_life)
	Next
End Function

;#####################################################################################################
; MAIN LOOP
;#####################################################################################################

Color(255,255,255)

While(Not(KeyHit(1)))
	; move all "sonics"
	SONIC_actionAll()
	
	; check user input
	If (MouseHit(1)) Then
		; launch wave of "sonics" when left mouse button is hit, use random values
		SONIC_launchWave(MouseX(),MouseY(),Rand(100,200),Rand(5,10),Rand(20,50),Rnd(1,2))
	End If

	Cls
	
	; draw background
	DrawImage(g_gfx_background,0,0)
	
	; draw all "sonics"
	SONIC_drawAll()

	Plot(MouseX(),MouseY())

	Flip
Wend

Delete Each SONIC

End



darklordz(Posted 2003) [#16]
Thanks Floppy i'll check it out l8tr 2night...