@hackage Rasenschach0.1.1

Soccer simulation

===== R A S E N S C H A C H ======

Single player, mouse controlled soccer game with simple graphics and flexible, extensible AI. Based on the Yampa arcade and Gerold Meisinger's Yampa/SDL stub.

Backlog:

No. T A S K S T A T E

1 graphics rendering for ball and player done (basics)

2 FRP version of Finite State Machine done (basics)

3 basic FRP feedback loop done (basics)

4 rendering for game object (score and game time) done (basics)

5a basic version of player FSM done (basics)

5b basic version of game FSM done (basics)

6 "kickoff-situation": players move from sideline done (basics) to pre-kickoff base position

7 add sound to player and ball action done (basics)

8 basic mouse and keyboard input events (see Yampa done (basics) arcade parser)

9 single player moves around based on input events done (basics)

10 add ball control to 9 done (basics)

11 add shooting to 10 done (basics)

12 add another player to 10 done (basics)

13 add "on key down"-FSM to parser done (basics)

14 add "take ball from other player" to fsms done (basics)

15 define core player (base for AI and user player) done (basics)

16 add bounce logic to player collision done (basics)

17 define team objects (which will compute AI orders) done (basics)

18 add team membership and position to player object done (basics)

19 define bouncing logic for goal post later

20 add stunning logic (probably on hard collision?) later

21 send proper messages on goal, out (side, end) done "simple events"

22 set up new game afer goal or out (simplistic) done "simple events"

23 enhance offensive ai: shoot on goal when free sprint "playable version"

24 enhance defensive ai: attack when near own goal later

25 add goalie (own player object?) later

26 add proper throw in (ball behind player's head) done "simple events"

27 selection of "designated player" by mouse later

28 new key action: pass to designated player done "playable version"

29 new key action: pass to running player (aim ahead) later

30 write TH parser for AI commands later

31 proper FSM for game object done "simple events"

32 render something nice for designated receiver later

33 new key action: switch to nearest player later

34 pause and resume game action later

35 enhance offensive ai: pass to better positioned later player

36 add multiple round mechanism a la Yampa Arcade: done "simple events" new round would be entered on kick off

37 controlled player can also throw in (very basic) done "playable version"

38 AI action: throw in done "simple events" - compute spot for throw in - aim for this spot (not throw in immediately) - throw in and resume play

39 Bug: when ball goes out of bounce, and then ai done "simple events" player touches it, then other team won't take it

40 Bug: when player throws in, he immediately retakes done "simple events" the ball since he is in the way of the ball...

41 Hack: on base out, throw in near the base line done "playable version"

42 display controlled player blinking done "playable version"

43 controlled player can also kick off done "playable version"

44 display goal event and score sprint "playable version"

45 fix meterToPixel stuff (y axis kind of weird) done "playable version"

46 player who kicked off or threw in etc. can not be later the first to touch the ball again

47 controlled player can aim for throw in (follow up later to 37)

48 if controlled player throws in, then stop other later player moving_to_throwin from grabbing the ball

49 Bug: if team consists solely of non AI players, later this line in ObjectBehaviour / player blows:

    let np = nearestNonAIPlayer myTeam vss pd

50 Bug: if kick off goes directly to side out, no one later throws in and the state remains "GSRunning" instead of GSSideOut

51 for test, it would be good to have an editor of sprint "refinement" some kind for game situations (player position,
heading and speed, dito for ball)

Taglist:

T A G C O N T E N T S

RSSP-0.0.1 basics "simple events"