A (single|multi)-player AirHockey game written in OpenGL
C++ C Vim script
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
resources
README
Transformation.cpp
Transformation.h
Utilities.cpp
Utilities.h
bat_models.cpp
bat_models.h
cbat.cpp
cbat.h
cboard.cpp
cboard.h
cbutton.cpp
cbutton.h
ccamera.cpp
ccamera.h
cfontprinter.cpp
cfontprinter.h
cgame
cgame.cpp
cgame.h
clabel.cpp
clabel.h
cnetwork_queue.cpp
cnetwork_queue.h
cpacketdata.h
cpanel.cpp
cpanel.h
cpanelobjek.cpp
cpanelobjek.h
cplayer.cpp
cplayer.h
cpuck.cpp
cpuck.h
csoundplayer.cpp
csoundplayer.h
ctextinput.cpp
ctextinput.h
ctexture.cpp
ctexture.h
ctheme.cpp
ctheme.h
dump
dump1
dump2
game_mainmenu.h
game_over.h
game_paused.h
game_running.h
globalDefs.h
main (copy)
main.cpp
main.h
makefile
models.cpp
models.h
network_client.h
network_server.h
networking.h
poller.h
puck_models.cpp
puck_models.h
safe__game_mainmenu.h
safe__game_running.h
safe__game_running2.h
safe__game_running3.h_new_vectors_pdf_working.h
tags
temp_script.cpp
themes.h
vim2Session.vim
vimSession.vim

README

#############################################################################################################################

## To compile, hit make
## To run, hit ./main

#############################################################################################################################

## Requires : SDL, SDL_image, SDL_net, freeglut

#############################################################################################################################

## Todo : 

V# Support Resize! and/or fullscreen
V# Increase mouse sensitivity in MainMenu? 
V# Custom music
## Change the poller (eventManager) to 'bite off' more than 20 events at once
V# Investigate memory leaks in ftgl code
V# Add entry and exit functions in each gamestate that are called on each gamestate switch 
## Make display lists out of mainmenu pictures, and the bats, and the puck

## Anti-aliasing : 
## 	Investigate GL_MULTISAMPLE_ARB, , needs to create window with that pixel format? 
## 	Try w/ bigger objects, and bigger clipping volume, in the same window
##	Fall back to accum buffer smoothing

V# Make player and bats and puck inits callable from game_mainmenu on transition to game_running
V# i.e., Add single-use-only pattern to all loadModels( ) functions

V# Add NetworkProgramming threads
## Add error checking while initialising each module, so that the game can still be played w/o 
## certain modules, (example : networking, anti-aliasing)

V# *** Can't run more than 1 instance of AirHockey at once!!! 
V#     Fixed the Networking part (try to bind to another socket)
V#     Some issue w/ peepEvents : peepEvents fails when another udp server is running on the same socket_number
##     !!! cleanUP() in NSGame* doesn't work, , and causes SDL_PeepEvents to fail
## Looks fine now. Soln. : try to bind to 2000, and if failed, try to bind to 6000

## Move applicable stuff into globalDefs.h
## Change class member definitions from public to private where applicable

V# Add textboxs for input and for credits etc
V# Add controls in game_settings.h ? or keep it in game_mainmenu.h ? [edit : looks like it'll stay in game_mainmenu.h, for now]
V# Have added some basic UI elements (FontPrinter, Panel, TextInput)
V# Have the sub-buttons pop up in the middle of the screen w/ a CPanel around them
V# Let CTextInput remain a CPanelObjek
V# Add highlight/popout support for clabel
V# Add pointLiesWithin/click supprot for cpanel
## TextInput is numeric and periods only for now (ip address)
V# Add inputDoneHandler to TextInput
## !! Panel.enable/disableChildren doesn't work
V# Add "enter remote server's ip address" label
V# Add backspace support to TextInput
## Add appropriate errorHandling to checkIpAddr( ) 
V# Make sure that clicking on multiplayer_panel does not make it vanish; basically, add clickHandler for Panel and set it empty here
## Handle SDL_WM_GrabInput correctly to support multiplayer game on the same system;
#  basically by allowing 'esc' to come out of GrabInput; perhaps have 'esc' place the game in PAUSE mode AND release Grab. seems like a good idea
#  perhaps, have GrabInput as a user defined option? seems like a good idea
V# Also, w/ reduced mouse_sensitivity, the bat doesn't move all the way to left until it is moved all the way to the right at least once; investigate
## Adjust Font to adjust w/ screen_size

## Physics
V# Puck's motion (vector)
V# Bats'  motion (vector)
V# Collission of bats w/ wall
V# Collission of puck w/ wall
V# Collission of bats w/ puck
   http://en.wikipedia.org/wiki/Inelastic_collision
   http://en.wikipedia.org/wiki/Elastic_collision
V# Take care of bats' motion when the bat has the puck pinned against a wall
## Fix the spinning thing. Will it go away w/ lesser work_thread_anim_delay_msecs?
#	Have changed epsilon to 2*epsilon while dealing w/ bat2 in pauli(); this seems to help, somewhat
#	Explore adding a new MOVE in make_plan() to help reduce this problem
V# Make sure that bat cannont move "over" the puck
V# Predictive collission handling to prevent bat from moving "over" puck and puck from going "into" walls
V# Convert everything to vectors
V# Add elastics to bat motion
V# Make sure initial position of the elastic is centered over the bat
## Fix MAX_BAT_SPEED to be configurable as "friction" (note: range-space: 1.5 - 6.0) (Note: will be needed if WM_Grab_Input() will be used)
## FIX BUFFER_FACTOR_FOR_COLLISSION_DETECTION to real value
V# Bat2's y velocity is too high after changing work_thread_anim_delay_msecs from 40 to 10. Check
## Have reduced bat's mass from 4.25 to 0.25 : this reduces the "spinning" thing, and makes the collissiions more inelastic

## Revisit the bounding conditions for goal checking

V# AI for when playing singleplayer mode

## Check if mouse/bat binding is good enough on any system; think about it

## Add throttle to networking delay so as not to inundate a slow network with too many packets
## Add throttle/skip if too many msgs backed up for sending in NetworkQueue;
#  or have a feedback between num_msgs_backed_up_for_sending and ticks in game_running.h
V# Add seqNum support
## Add /smart/ seqNum handling

## If the server exe is not started before the client exe, it won't connect (at least on a single comp)

## Support themes in settings; or add themes.conf to main directory
V# Make more themes
V# Add background color in themes

## Add in settings:
V# theme, music_volume, soundEffects_volume, mouse_sensitivity, friction, difficulty level
V# Change settings panel to contain key bindings info
## Add an on-disk settings.conf file to keep settings persistent, and add friction, inelasticity, etc there

V# Esc should come back to main_menu, or something
V# Add in game timer, and end condition for game on number of goals

V# Change board_color to 1.0 in mainmenu

## Finally, in production build :
	debug = 1
	MOUSE_SENSITIVITY = 1/7.0
	WM_Grab_Input in game_Running should be true in entryFunction()

V# !! Decrease work_thread_anim_delay_msecs to 10
## Check the time taken for work_thread_anim_delay_msecs to execute in ms

## Change puck's specular highlights and change disney's puck color to black

## Cannot have back-to-back multiplayer games

#############################################################################################################################


http://content.gpwiki.org/index.php/SDL:Tutorials:Setup
http://forums.libsdl.org/viewtopic.php?t=7551&sid=5cafdbd040f9e60c88ce9ae062746389


## On windows :
# Puck color is white w/ low res
# Change mp3 to wav
  fixed w/ smpeg.dll
# Networking not working
# Try increasing the frame_rate on rendering thread
# Write a windows README
V "credits"
# Color doesn't come back to white in mainMenu
# Remove all printfs