Skip to content

Instantly share code, notes, and snippets.

@jcmiller11
Created January 30, 2020 00:41
Show Gist options
  • Select an option

  • Save jcmiller11/959f9b9eab447ccea9243d74de164fcd to your computer and use it in GitHub Desktop.

Select an option

Save jcmiller11/959f9b9eab447ccea9243d74de164fcd to your computer and use it in GitHub Desktop.
Isometric Game Demo WIP (PuzzleScript Script)
Play this game by pasting the script in http://www.puzzlescript.net/editor.html
title Isometric Game Demo WIP
author jcGyo
homepage www.puzzlescript.net
run_rules_on_level_start
verbose_logging
background_color black
zoomscreen 20x12
========
OBJECTS
========
Background
lightblue
Player
transparent
Player1StartPos
transparent
Player1
transparent
Player2StartPos
transparent
Player2
transparent
Player1DUL
red
.....
.....
..000
.0000
.0000
Player1DUR
red darkred black
.....
.....
1....
11...
11...
Player1DDL
red darkred black
.0000
.0222
..022
...00
....0
Player1DDR
red darkred black
0111.
00111
20011
00001
00000
Player1UUL
red
.....
..000
.0000
.0000
.0000
Player1UUR
red darkred black
.....
1....
11...
111..
0111.
Player1UDL
red darkred black
.0000
...00
...00
....0
.....
Player1UDR
red darkred black
00111
00011
00001
00000
0000.
Player1RUL
red
.....
..000
.0000
.0000
.0000
Player1RUR
red darkred black
.....
1....
21...
221..
2211.
Player1RDL
red darkred black
..000
....0
....0
.....
.....
Player1RDR
red darkred black
1211.
0111.
0011.
0001.
.000.
Player1LUL
red darkred
.....
.0001
00001
00001
00001
Player1LUR
red darkred black
.....
.....
1....
1....
111..
Player1LDL
red darkred black
.0001
..000
...00
....0
.....
Player1LDR
red darkred black
1111.
1111.
0111.
0011.
000..
Player2DUL
red
.....
.....
..000
.0000
.0000
Player2DUR
red darkred black
.....
.....
1....
11...
11...
Player2DDL
red darkred black
.0000
.0222
..022
...00
....0
Player2DDR
red darkred black
0111.
00111
20011
00001
00000
Player2UUL
red
.....
..000
.0000
.0000
.0000
Player2UUR
red darkred black
.....
1....
11...
111..
0111.
Player2UDL
red darkred black
.0000
...00
...00
....0
.....
Player2UDR
red darkred black
00111
00011
00001
00000
0000.
Player2RUL
red
.....
..000
.0000
.0000
.0000
Player2RUR
red darkred black
.....
1....
21...
221..
2211.
Player2RDL
red darkred black
..000
....0
....0
.....
.....
Player2RDR
red darkred black
1211.
0111.
0011.
0001.
.000.
Player2LUL
red darkred
.....
.0001
00001
00001
00001
Player2LUR
red darkred black
.....
.....
1....
1....
111..
Player2LDL
red darkred black
.0001
..000
...00
....0
.....
Player2LDR
red darkred black
1111.
1111.
0111.
0011.
000..
Ground1UL
LIGHTGREEN GREEN
11111
01111
11101
11111
10111
Ground1UR
darkbrown
.....
0....
00...
000..
0000.
Ground1DL
brown
00000
.0000
..000
...00
....0
Ground1DR
brown darkbrown
11111
01111
00111
00011
00001
Ground2UL
GREEN LIGHTGREEN
11111
01111
11101
11111
10111
Ground2UR
darkbrown
.....
0....
00...
000..
0000.
Ground2DL
brown
00000
.0000
..000
...00
....0
Ground2DR
brown darkbrown
11111
01111
00111
00011
00001
Crate1StartPos
transparent
Crate1
transparent
Crate1UL
lightgray
Crate1UR
grey darkgray
.....
1....
11...
111..
1111.
Crate1DL
grey darkgray
00000
.0000
..000
...00
....0
Crate1DR
grey darkgray
11111
01111
00111
00011
00001
Crate2StartPos
transparent
Crate2
transparent
Crate2UL
lightgray
Crate2UR
grey darkgray
.....
1....
11...
111..
1111.
Crate2DL
grey darkgray
00000
.0000
..000
...00
....0
Crate2DR
grey darkgray
11111
01111
00111
00011
00001
Base1
transparent
Base2
transparent
LadderDL
Darkbrown Black
.....
.1111
.....
...11
.....
LadderDR
Darkbrown Black
.....
1....
.....
111..
.....
Bridge1
Black Darkbrown
00000
10101
10101
10101
00000
Bridge2
Black Darkbrown
00000
10101
10101
10101
00000
Bridge1StartPos
transparent
Bridge2StartPos
transparent
Ladder
transparent
Temp
transparent
Temp2
transparent
UpMarker
transparent
RightMarker
transparent
DownMarker
transparent
LeftMarker
transparent
SavepointPos
transparent
Savepoint
transparent
(REMOVEME: For temp win condition)
FakeGoal
yellow
0.0.0
.000.
00.00
.000.
0.0.0
FakeGoalStartPos
transparent
=======
LEGEND
=======
# = Background
. = Base1
; = Base2
↓ = DownMarker
1 = Player1StartPos
2 = Player2StartPos
C = Crate1StartPos
D = Crate2StartPos
L = Ladder and Base2
O = Ladder
B = Bridge1StartPos
G = Bridge2StartPos
T = Bridge2StartPos and Base1
Z = FakeGoalStartPos
S = SavepointPos
Markers = UpMarker or RightMarker or DownMarker or LeftMarker
PlayerUp = Player1UUL or Player1UUR or Player1UDL or Player1UDR or Player2UUL or Player2UUR or Player2UDL or Player2UDR
PlayerDown = Player1DUL or Player1DUR or Player1DDL or Player1DDR or Player2DUL or Player2DUR or Player2DDL or Player2DDR
PlayerRight = Player1RUL or Player1RUR or Player1RDL or Player1RDR or Player2RUL or Player2RUR or Player2RDL or Player2RDR
PlayerLeft = Player1LUL or Player1LUR or Player1LDL or Player1LDR or Player2LUL or Player2LUR or Player2LDL or Player2LDR
Quarter1UL = Player1UUL or Player1DUL or Player1RUL or Player1LUL or Crate1UL
Quarter1UR = Player1UUR or Player1DUR or Player1RUR or Player1LUR or Crate1UR
Quarter1DL = Player1UDL or Player1DDL or Player1RDL or Player1LDL or Crate1DL
Quarter1DR = Player1UDR or Player1DDR or Player1RDR or Player1LDR or Crate1DR
Quarter2UL = Player2UUL or Player2DUL or Player2RUL or Player2LUL or Crate2UL
Quarter2UR = Player2UUR or Player2DUR or Player2RUR or Player2LUR or Crate2UR
Quarter2DL = Player2UDL or Player2DDL or Player2RDL or Player2LDL or Crate2DL
Quarter2DR = Player2UDR or Player2DDR or Player2RDR or Player2LDR or Crate2DR
Quarters = Ground1UL or Ground1UR or Ground1DL or Ground1DR or Ground2UL or Ground2UR or Ground2DL or Ground2DR or PlayerUp or PlayerDown or PlayerLeft or PlayerRight
Walkable1 = Ground1UL or Bridge1
Walkable2 = Ground2UL or Crate1UL or Bridge2
Movable1 = Crate1 or Player1
Movable2 = Crate2 or Player2
StartingPositions = Player1StartPos or Player2StartPos or Crate1StartPos or Crate2StartPos or Ladder or Bridge1StartPos or Bridge2StartPos or FakeGoalStartPos or SavepointPos
=======
SOUNDS
=======
================
COLLISIONLAYERS
================
Background
StartingPositions
Temp, Temp2
Player
Base1,Base2
Ground1DR
Ground1DL
Ground1UR
Ground1UL, Bridge1
FakeGoal
Player1, Crate1
Ground2DR
Quarter1DR
Ground2DL
LadderDR
LadderDL
Quarter1DL
Ground2UR
Quarter1UR
Ground2UL
Quarter1UL
Bridge2
Player2, Crate2
Quarter2DR
Quarter2DL
Quarter2UR
Quarter2UL
Markers, Savepoint
======
RULES
======
(Player movement)
(maybe replace with playerleft playerright etc. player objects instead of a separate marker?)
[UP Player] [Markers] -> [UP Player] [UpMarker]
[DOWN Player] [Markers] -> [DOWN Player] [DownMarker]
[RIGHT Player] [Markers] -> [RIGHT Player] [RightMarker]
[LEFT Player] [Markers] -> [LEFT Player] [LeftMarker]
[> Player] [Player1] -> [> Player] [> Player1]
[> Player] [Player2] -> [> Player] [> Player2]
(Ladder movement)
UP [UP Player1|LadderDR] -> [|temp LadderDR]
RIGHT [|temp] -> [UP Player2|]
DOWN [DOWN Player2|LadderDL no Walkable2] -> [|temp LadderDL]
LEFT [|temp] -> [DOWN Player1|]
(FIXME: hacky solution to making pushing against two boxes on top of a ladder work)
LATE [Player2 LadderDL no Walkable2] -> cancel
(Mark crates that have objects on top of them)
RIGHT [Movable2|no Bridge2] -> [Movable2|temp]
DOWN [temp|] -> [|temp2]
(Push crates)
startLoop
[> Player1 | Crate1 no temp2] -> [> Player1 | > Crate1]
(Push crates on 2nd layer)
[> Player2 | Crate2] -> [> Player2 | > Crate2]
(BREAK GEOMETRY)
[> Player1 Bridge1| Bridge2] -> [Bridge1 > Player2|Bridge2]
[> Player2 Bridge2| Bridge1] -> [Bridge2 > Player1|Bridge1]
[> Crate1 Bridge1| Bridge2] -> [Bridge1 > Crate2|Bridge2]
[> Crate2 Bridge2| Bridge1] -> [Bridge2 > Crate1|Bridge1]
endLoop
(FIXME: hacky solution to making pushing against two boxes on a bridge work)
LATE [Player2 Crate1 Bridge2 | Bridge1] -> cancel
LATE [Movable2 Bridge1] -> cancel
[temp2] -> []
(Stop movables from moving into illegal spots)
[> Movable1 | No Walkable1] -> [Movable1 |]
[> Movable2 | No Walkable2] -> [Movable2 |]
[> Player] -> [Player] (fix undo)
[Player Savepoint] -> [Player] checkpoint
(Rendering)
[Quarters] -> []
(Player1)
Late [Player1] [DownMarker] -> [Player1 Player1DDR] [DownMarker]
Late DOWN [|Player1DDR] -> [Player1DUR|Player1DDR]
Late RIGHT [|Player1DDR] -> [Player1DDL|Player1DDR]
Late DOWN [|Player1DDL] -> [Player1DUL|Player1DDL]
Late [Player1] [UpMarker] -> [Player1 Player1UDR] [UpMarker]
Late DOWN [|Player1UDR] -> [Player1UUR|Player1UDR]
Late RIGHT [|Player1UDR] -> [Player1UDL|Player1UDR]
Late DOWN [|Player1UDL] -> [Player1UUL|Player1UDL]
Late [Player1] [RightMarker] -> [Player1 Player1RDR] [RightMarker]
Late DOWN [|Player1RDR] -> [Player1RUR|Player1RDR]
Late RIGHT [|Player1RDR] -> [Player1RDL|Player1RDR]
Late DOWN [|Player1RDL] -> [Player1RUL|Player1RDL]
Late [Player1] [LeftMarker] -> [Player1 Player1LDR] [LeftMarker]
Late DOWN [|Player1LDR] -> [Player1LUR|Player1LDR]
Late RIGHT [|Player1LDR] -> [Player1LDL|Player1LDR]
Late DOWN [|Player1LDL] -> [Player1LUL|Player1LDL]
(Bug fix for non-euclidean bridges)
Late RIGHT [Player1UDL Bridge2 | Player1 Bridge1] -> [Player2UDL Bridge2 | Player1 Bridge1]
Late RIGHT [Player1DDL Bridge2 | Player1 Bridge1] -> [Player2DDL Bridge2 | Player1 Bridge1]
Late RIGHT [Player1LDL Bridge2 | Player1 Bridge1] -> [Player2LDL Bridge2 | Player1 Bridge1]
Late RIGHT [Player1RDL Bridge2 | Player1 Bridge1] -> [Player2RDL Bridge2 | Player1 Bridge1]
(Player2)
Late [Player2] [DownMarker] -> [Player2 Player2DDR] [DownMarker]
Late DOWN [|Player2DDR] -> [Player2DUR|Player2DDR]
Late RIGHT [|Player2DDR] -> [Player2DDL|Player2DDR]
Late DOWN [|Player2DDL] -> [Player2DUL|Player2DDL]
Late [Player2] [UpMarker] -> [Player2 Player2UDR] [UpMarker]
Late DOWN [|Player2UDR] -> [Player2UUR|Player2UDR]
Late RIGHT [|Player2UDR] -> [Player2UDL|Player2UDR]
Late DOWN [|Player2UDL] -> [Player2UUL|Player2UDL]
Late [Player2] [RightMarker] -> [Player2 Player2RDR] [RightMarker]
Late DOWN [|Player2RDR] -> [Player2RUR|Player2RDR]
Late RIGHT [|Player2RDR] -> [Player2RDL|Player2RDR]
Late DOWN [|Player2RDL] -> [Player2RUL|Player2RDL]
Late [Player2] [LeftMarker] -> [Player2 Player2LDR] [LeftMarker]
Late DOWN [|Player2LDR] -> [Player2LUR|Player2LDR]
Late RIGHT [|Player2LDR] -> [Player2LDL|Player2LDR]
Late DOWN [|Player2LDL] -> [Player2LUL|Player2LDL]
(Ground)
(Level 1)
LATE [Base1 no Ground1DR] -> [Base1 Ground1DR]
+ LATE DOWN [| Ground1DR] -> [Ground1UR|Ground1DR]
+ LATE RIGHT [| Ground1DR] -> [Ground1DL|Ground1DR]
+ LATE DOWN [| Ground1DL] -> [Ground1UL|Ground1DL]
(Level 2)
LATE [Base2 no Ground1DR] -> [Base2 Ground1DR temp]
+ LATE DOWN [| Ground1DR temp] -> [Ground1UR|Ground1DR temp]
+ LATE RIGHT [| Ground1DR temp] -> [Ground1DL temp|Ground1DR]
+ LATE DOWN [| Ground1DL temp] -> [Ground2DR|Ground1DL]
+ LATE RIGHT [| Ground2DR] -> [Ground2DL|Ground2DR]
+ LATE DOWN [| Ground2DL] -> [Ground2UL|Ground2DL]
+ LATE DOWN [| Ground2DR] -> [Ground2UR|Ground2DR]
(Crate1)
Late [Crate1] -> [Crate1 Crate1DR]
Late DOWN [| Crate1DR] -> [Crate1UR|Crate1DR]
Late RIGHT [| Crate1DR] -> [Crate1DL|Crate1DR]
Late DOWN [| Crate1DL] -> [Crate1UL|Crate1DL]
(Crate2)
Late [Crate2] -> [Crate2 Crate2DR]
Late DOWN [| Crate2DR] -> [Crate2UR|Crate2DR]
Late RIGHT [| Crate2DR] -> [Crate2DL|Crate2DR]
Late DOWN [| Crate2DL] -> [Crate2UL|Crate2DL]
(Bug fix for non-euclidean bridges)
Late RIGHT [Crate1DL Bridge2 | Crate1 Bridge1] -> [Crate2DL Bridge2 | Crate1 Bridge1]
Late RIGHT [Player2 Bridge2| Bridge1] ->[Player2 Bridge2 temp| Bridge1]
Late [Player2RUR Crate1UL] [temp] -> [Player1RUR Crate1UL] []
Late [temp] -> []
(Setup)
(REMOVEME: For temp win condition)
RIGHT [ |FakeGoalStartPos] -> [temp|Base1]
+ DOWN [ |temp] -> [FakeGoal|]
(Build ladders and bridges)
[Ladder] -> [Ladder]
+ RIGHT [|Ladder] -> [temp|]
+ DOWN [|temp] -> [temp2|]
RIGHT [|temp2] -> [LadderDL|LadderDR]
RIGHT [ |Bridge1StartPos] -> [temp|]
+ DOWN [ |temp] -> [Bridge1|]
RIGHT [ |Bridge2StartPos] -> [temp|]
+ DOWN [ |temp] -> [temp2|]
+ RIGHT [ |temp2] -> [temp|]
+ DOWN [ |temp] -> [Bridge2|]
(Place player)
(Maybe can be simplified depending on how game starts?)
[Player1StartPos] -> [Player1StartPos Base1 Player]
+ RIGHT [ |Player1StartPos] -> [temp|]
+ DOWN [ |temp] -> [Player1|]
[Player2StartPos] -> [Player2StartPos Base2 Player]
+ RIGHT [ |Player2StartPos] -> [temp|]
+ DOWN [ |temp] -> [temp2|]
+ RIGHT [ |temp2] -> [temp|]
+ DOWN [ |temp] -> [Player2|]
(Place crates)
[Crate1StartPos] -> [Crate1StartPos Base1]
+ RIGHT [ |Crate1StartPos] -> [temp|]
+ DOWN [ |temp] -> [Crate1|]
[Crate2StartPos] -> [Crate2StartPos Base2]
+ RIGHT [ |Crate2StartPos] -> [temp|]
+ DOWN [ |temp] -> [temp2|]
+ RIGHT [ |temp2] -> [temp|]
+ DOWN [ |temp] -> [Crate2|]
(Place savepoints)
[SavepointPos] -> [SavepointPos Base1]
+ RIGHT [ |SavepointPos] -> [temp|]
+ DOWN [ |temp] -> [Savepoint|]
(Adjust Player position for zoom or flick screen)
LATE [Player] [Player1 no Player] -> [] [Player1 Player]
LATE [Player] [Player2 no Player] -> [] [Player2 Player]
==============
WINCONDITIONS
==============
Some Player1 on FakeGoal
=======
LEVELS
=======
message I'd like to kindly ask you not to share this with others yet :)
↓###################
####################
####################
####################
####################
##Z................#
##.................#
#################..#
#################..#
#################..#
###;;;;;;;;DD;;;;TL#
###;;;;L;;;DD;;;;S.#
###;;........;;;;###
###;;.C...C..;;;;###
###;;.......;;;;;###
###;;;;..;;;;;;#####
###;;;;..;;;;#######
#######..###########
#####;GTTG;#########
#######..###########
#######..BBB..LL;;;#
############..S.;;;#
#################;;#
##...############;;#
##...B##;;;;;;;##;;#
##...##G;;D;D;;##;;#
##...###;D;D;D;...;#
##........#####...##
##................##
##................##
########;S;#########
########...#########
########;;.#########
########;L.#########
#####;;;;..#########
####;;;;;..#########
####;;;;;##;;;######
####;;;;;##;;;;#####
####;;;;;##L;;;#####
####;;;......;######
####;;;..C....######
####;;;......;######
#####;;TTTTT;;######
#####.........######
#####....1....######
####################
Message Thanks for trying this demo :)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment