diff --git a/CheckersClient/android/assets/Menu/1x/Rocket_Small@1x.png b/CheckersClient/android/assets/Menu/1x/Rocket_Small@1x.png
new file mode 100644
index 0000000000000000000000000000000000000000..f9e9d27e2379eeedbcfd0e27531e7c4aeefc9514
Binary files /dev/null and b/CheckersClient/android/assets/Menu/1x/Rocket_Small@1x.png differ
diff --git a/CheckersClient/android/assets/Menu/LobbyPlayTransition.mp3 b/CheckersClient/android/assets/Menu/LobbyPlayTransition.mp3
new file mode 100644
index 0000000000000000000000000000000000000000..704fec6dd367e3de9ed0785ec5a11f598201fd78
Binary files /dev/null and b/CheckersClient/android/assets/Menu/LobbyPlayTransition.mp3 differ
diff --git a/CheckersClient/android/assets/Menu/LobbyPlayTransition.mp3.asd b/CheckersClient/android/assets/Menu/LobbyPlayTransition.mp3.asd
new file mode 100644
index 0000000000000000000000000000000000000000..107da36ee1ecf8194cf68d1a17ad7a71144ddc3e
Binary files /dev/null and b/CheckersClient/android/assets/Menu/LobbyPlayTransition.mp3.asd differ
diff --git a/CheckersClient/android/assets/Menu/PostLobbyLoop.mp3 b/CheckersClient/android/assets/Menu/PostLobbyLoop.mp3
new file mode 100644
index 0000000000000000000000000000000000000000..5b4c91bef411aeb95b82c4c4fa88898865a246f3
Binary files /dev/null and b/CheckersClient/android/assets/Menu/PostLobbyLoop.mp3 differ
diff --git a/CheckersClient/android/assets/Menu/PostLobbyLoop.mp3.asd b/CheckersClient/android/assets/Menu/PostLobbyLoop.mp3.asd
new file mode 100644
index 0000000000000000000000000000000000000000..5c7a5744db7e1e8c4f983a87d5c338072e558506
Binary files /dev/null and b/CheckersClient/android/assets/Menu/PostLobbyLoop.mp3.asd differ
diff --git a/CheckersClient/android/assets/characters/AsianGirl1@1x.png b/CheckersClient/android/assets/characters/AsianGirl1.png
similarity index 100%
rename from CheckersClient/android/assets/characters/AsianGirl1@1x.png
rename to CheckersClient/android/assets/characters/AsianGirl1.png
diff --git a/CheckersClient/android/assets/characters/AsianGirl2@1x.png b/CheckersClient/android/assets/characters/AsianGirl2.png
similarity index 100%
rename from CheckersClient/android/assets/characters/AsianGirl2@1x.png
rename to CheckersClient/android/assets/characters/AsianGirl2.png
diff --git a/CheckersClient/android/assets/characters/AsianGirl3@1x.png b/CheckersClient/android/assets/characters/AsianGirl3.png
similarity index 100%
rename from CheckersClient/android/assets/characters/AsianGirl3@1x.png
rename to CheckersClient/android/assets/characters/AsianGirl3.png
diff --git a/CheckersClient/android/assets/characters/AsianGirlPortrait@1x.png b/CheckersClient/android/assets/characters/AsianGirlPortrait.png
similarity index 100%
rename from CheckersClient/android/assets/characters/AsianGirlPortrait@1x.png
rename to CheckersClient/android/assets/characters/AsianGirlPortrait.png
diff --git a/CheckersClient/android/assets/characters/Grandma1@1x.png b/CheckersClient/android/assets/characters/Grandma1.png
similarity index 100%
rename from CheckersClient/android/assets/characters/Grandma1@1x.png
rename to CheckersClient/android/assets/characters/Grandma1.png
diff --git a/CheckersClient/android/assets/characters/Grandma2@1x.png b/CheckersClient/android/assets/characters/Grandma2.png
similarity index 100%
rename from CheckersClient/android/assets/characters/Grandma2@1x.png
rename to CheckersClient/android/assets/characters/Grandma2.png
diff --git a/CheckersClient/android/assets/characters/Grandma3@1x.png b/CheckersClient/android/assets/characters/Grandma3.png
similarity index 100%
rename from CheckersClient/android/assets/characters/Grandma3@1x.png
rename to CheckersClient/android/assets/characters/Grandma3.png
diff --git a/CheckersClient/android/assets/characters/GrandmaPortrait@1x.png b/CheckersClient/android/assets/characters/GrandmaPortrait.png
similarity index 100%
rename from CheckersClient/android/assets/characters/GrandmaPortrait@1x.png
rename to CheckersClient/android/assets/characters/GrandmaPortrait.png
diff --git a/CheckersClient/android/assets/characters/HighSchoolGuy1@1x.png b/CheckersClient/android/assets/characters/HighSchoolGuy1.png
similarity index 100%
rename from CheckersClient/android/assets/characters/HighSchoolGuy1@1x.png
rename to CheckersClient/android/assets/characters/HighSchoolGuy1.png
diff --git a/CheckersClient/android/assets/characters/HighSchoolGuy2@1x.png b/CheckersClient/android/assets/characters/HighSchoolGuy2.png
similarity index 100%
rename from CheckersClient/android/assets/characters/HighSchoolGuy2@1x.png
rename to CheckersClient/android/assets/characters/HighSchoolGuy2.png
diff --git a/CheckersClient/android/assets/characters/HighSchoolGuy3@1x.png b/CheckersClient/android/assets/characters/HighSchoolGuy3.png
similarity index 100%
rename from CheckersClient/android/assets/characters/HighSchoolGuy3@1x.png
rename to CheckersClient/android/assets/characters/HighSchoolGuy3.png
diff --git a/CheckersClient/android/assets/characters/HighSchoolGuyPortrait@1x.png b/CheckersClient/android/assets/characters/HighSchoolGuyPortrait.png
similarity index 100%
rename from CheckersClient/android/assets/characters/HighSchoolGuyPortrait@1x.png
rename to CheckersClient/android/assets/characters/HighSchoolGuyPortrait.png
diff --git a/CheckersClient/android/assets/characters/HipsterGirl1@1x.png b/CheckersClient/android/assets/characters/HipsterGirl1.png
similarity index 100%
rename from CheckersClient/android/assets/characters/HipsterGirl1@1x.png
rename to CheckersClient/android/assets/characters/HipsterGirl1.png
diff --git a/CheckersClient/android/assets/characters/HipsterGirl2@1x.png b/CheckersClient/android/assets/characters/HipsterGirl2.png
similarity index 100%
rename from CheckersClient/android/assets/characters/HipsterGirl2@1x.png
rename to CheckersClient/android/assets/characters/HipsterGirl2.png
diff --git a/CheckersClient/android/assets/characters/HipsterGirl3@1x.png b/CheckersClient/android/assets/characters/HipsterGirl3.png
similarity index 100%
rename from CheckersClient/android/assets/characters/HipsterGirl3@1x.png
rename to CheckersClient/android/assets/characters/HipsterGirl3.png
diff --git a/CheckersClient/android/assets/characters/HipsterGirlPortrait@1x.png b/CheckersClient/android/assets/characters/HipsterGirlPortrait.png
similarity index 100%
rename from CheckersClient/android/assets/characters/HipsterGirlPortrait@1x.png
rename to CheckersClient/android/assets/characters/HipsterGirlPortrait.png
diff --git a/CheckersClient/android/assets/characters/MrServer1@1x.png b/CheckersClient/android/assets/characters/MrServer1.png
similarity index 100%
rename from CheckersClient/android/assets/characters/MrServer1@1x.png
rename to CheckersClient/android/assets/characters/MrServer1.png
diff --git a/CheckersClient/android/assets/characters/MrServer2@1x.png b/CheckersClient/android/assets/characters/MrServer2.png
similarity index 100%
rename from CheckersClient/android/assets/characters/MrServer2@1x.png
rename to CheckersClient/android/assets/characters/MrServer2.png
diff --git a/CheckersClient/android/assets/characters/MrServer3@1x.png b/CheckersClient/android/assets/characters/MrServer3.png
similarity index 100%
rename from CheckersClient/android/assets/characters/MrServer3@1x.png
rename to CheckersClient/android/assets/characters/MrServer3.png
diff --git a/CheckersClient/android/assets/characters/MrServerPortrait@1x.png b/CheckersClient/android/assets/characters/MrServerPortrait.png
similarity index 100%
rename from CheckersClient/android/assets/characters/MrServerPortrait@1x.png
rename to CheckersClient/android/assets/characters/MrServerPortrait.png
diff --git a/CheckersClient/android/assets/characters/RegularGuy1@1x.png b/CheckersClient/android/assets/characters/RegularGuy1.png
similarity index 100%
rename from CheckersClient/android/assets/characters/RegularGuy1@1x.png
rename to CheckersClient/android/assets/characters/RegularGuy1.png
diff --git a/CheckersClient/android/assets/characters/RegularGuy2@1x.png b/CheckersClient/android/assets/characters/RegularGuy2.png
similarity index 100%
rename from CheckersClient/android/assets/characters/RegularGuy2@1x.png
rename to CheckersClient/android/assets/characters/RegularGuy2.png
diff --git a/CheckersClient/android/assets/characters/RegularGuy3@1x.png b/CheckersClient/android/assets/characters/RegularGuy3.png
similarity index 100%
rename from CheckersClient/android/assets/characters/RegularGuy3@1x.png
rename to CheckersClient/android/assets/characters/RegularGuy3.png
diff --git a/CheckersClient/android/assets/characters/RegularGuyPortrait@1x.png b/CheckersClient/android/assets/characters/RegularGuyPortrait.png
similarity index 100%
rename from CheckersClient/android/assets/characters/RegularGuyPortrait@1x.png
rename to CheckersClient/android/assets/characters/RegularGuyPortrait.png
diff --git a/CheckersClient/android/assets/characters/RocketGuy1@1x.png b/CheckersClient/android/assets/characters/RocketGuy1x.png
similarity index 100%
rename from CheckersClient/android/assets/characters/RocketGuy1@1x.png
rename to CheckersClient/android/assets/characters/RocketGuy1x.png
diff --git a/CheckersClient/android/assets/characters/RocketGuy2@1x.png b/CheckersClient/android/assets/characters/RocketGuy2x.png
similarity index 100%
rename from CheckersClient/android/assets/characters/RocketGuy2@1x.png
rename to CheckersClient/android/assets/characters/RocketGuy2x.png
diff --git a/CheckersClient/android/assets/characters/RocketGuy3@1x.png b/CheckersClient/android/assets/characters/RocketGuy3x.png
similarity index 100%
rename from CheckersClient/android/assets/characters/RocketGuy3@1x.png
rename to CheckersClient/android/assets/characters/RocketGuy3x.png
diff --git a/CheckersClient/android/assets/characters/RocketGuyPortrait@1x.png b/CheckersClient/android/assets/characters/RocketGuyPortrait.png
similarity index 100%
rename from CheckersClient/android/assets/characters/RocketGuyPortrait@1x.png
rename to CheckersClient/android/assets/characters/RocketGuyPortrait.png
diff --git a/CheckersClient/android/assets/characters/atlases/AsianGirl.atlas b/CheckersClient/android/assets/characters/atlases/AsianGirl.atlas
new file mode 100644
index 0000000000000000000000000000000000000000..debabc38439c4510fd41d931d5b955a72abdeb7e
--- /dev/null
+++ b/CheckersClient/android/assets/characters/atlases/AsianGirl.atlas
@@ -0,0 +1,27 @@
+
+AsianGirl.png
+size: 2048, 2048
+format: RGBA8888
+filter: Nearest, Nearest
+repeat: none
+AsianGirl1
+  rotate: false
+  xy: 1004, 1004
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
+AsianGirl2
+  rotate: false
+  xy: 2, 2
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
+AsianGirl3
+  rotate: false
+  xy: 2, 1004
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
diff --git a/CheckersClient/android/assets/characters/atlases/AsianGirl.png b/CheckersClient/android/assets/characters/atlases/AsianGirl.png
new file mode 100644
index 0000000000000000000000000000000000000000..834312feba24f0fe6f6142fb1c7ecb2b2cdbd443
Binary files /dev/null and b/CheckersClient/android/assets/characters/atlases/AsianGirl.png differ
diff --git a/CheckersClient/android/assets/characters/atlases/Grandma.atlas b/CheckersClient/android/assets/characters/atlases/Grandma.atlas
new file mode 100644
index 0000000000000000000000000000000000000000..1a084ad67529e47762553fd9e92ac58a66e5c004
--- /dev/null
+++ b/CheckersClient/android/assets/characters/atlases/Grandma.atlas
@@ -0,0 +1,27 @@
+
+Grandma.png
+size: 2048, 2048
+format: RGBA8888
+filter: Nearest, Nearest
+repeat: none
+Grandma1
+  rotate: false
+  xy: 1004, 1004
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
+Grandma2
+  rotate: false
+  xy: 2, 2
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
+Grandma3
+  rotate: false
+  xy: 2, 1004
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
diff --git a/CheckersClient/android/assets/characters/atlases/Grandma.png b/CheckersClient/android/assets/characters/atlases/Grandma.png
new file mode 100644
index 0000000000000000000000000000000000000000..342d2659e65061e3c0d9cf29f0b53b75da3c93f1
Binary files /dev/null and b/CheckersClient/android/assets/characters/atlases/Grandma.png differ
diff --git a/CheckersClient/android/assets/characters/atlases/HighSchoolGuy.atlas b/CheckersClient/android/assets/characters/atlases/HighSchoolGuy.atlas
new file mode 100644
index 0000000000000000000000000000000000000000..cdc11ae7fde2968e0048587db8eec439405fdc27
--- /dev/null
+++ b/CheckersClient/android/assets/characters/atlases/HighSchoolGuy.atlas
@@ -0,0 +1,27 @@
+
+HighSchoolGuy.png
+size: 2048, 2048
+format: RGBA8888
+filter: Nearest, Nearest
+repeat: none
+HighSchoolGuy1
+  rotate: false
+  xy: 2, 1004
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
+HighSchoolGuy2
+  rotate: false
+  xy: 1004, 1004
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
+HighSchoolGuy3
+  rotate: false
+  xy: 2, 2
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
diff --git a/CheckersClient/android/assets/characters/atlases/HighSchoolGuy.png b/CheckersClient/android/assets/characters/atlases/HighSchoolGuy.png
new file mode 100644
index 0000000000000000000000000000000000000000..f7d83af4b5c71213da483f1f1bd6879c0e0d4bfa
Binary files /dev/null and b/CheckersClient/android/assets/characters/atlases/HighSchoolGuy.png differ
diff --git a/CheckersClient/android/assets/characters/atlases/HipsterGirl.atlas b/CheckersClient/android/assets/characters/atlases/HipsterGirl.atlas
new file mode 100644
index 0000000000000000000000000000000000000000..812d4b63b58a03ff0863bb88c67fffec14928fdc
--- /dev/null
+++ b/CheckersClient/android/assets/characters/atlases/HipsterGirl.atlas
@@ -0,0 +1,27 @@
+
+HipsterGirl.png
+size: 2048, 2048
+format: RGBA8888
+filter: Nearest, Nearest
+repeat: none
+HipsterGirl1
+  rotate: false
+  xy: 1004, 1004
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
+HipsterGirl2
+  rotate: false
+  xy: 2, 2
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
+HipsterGirl3
+  rotate: false
+  xy: 2, 1004
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
diff --git a/CheckersClient/android/assets/characters/atlases/HipsterGirl.png b/CheckersClient/android/assets/characters/atlases/HipsterGirl.png
new file mode 100644
index 0000000000000000000000000000000000000000..7e327a3d37d15eb057cabc3132022614a31090e4
Binary files /dev/null and b/CheckersClient/android/assets/characters/atlases/HipsterGirl.png differ
diff --git a/CheckersClient/android/assets/characters/atlases/MrServer.atlas b/CheckersClient/android/assets/characters/atlases/MrServer.atlas
new file mode 100644
index 0000000000000000000000000000000000000000..22634838e5edd5776d625c3951e4cea3c0b6ac11
--- /dev/null
+++ b/CheckersClient/android/assets/characters/atlases/MrServer.atlas
@@ -0,0 +1,27 @@
+
+MrServer.png
+size: 2048, 2048
+format: RGBA8888
+filter: Nearest, Nearest
+repeat: none
+MrServer1
+  rotate: false
+  xy: 2, 2
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
+MrServer2
+  rotate: false
+  xy: 2, 1004
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
+MrServer3
+  rotate: false
+  xy: 1004, 1004
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
diff --git a/CheckersClient/android/assets/characters/atlases/MrServer.png b/CheckersClient/android/assets/characters/atlases/MrServer.png
new file mode 100644
index 0000000000000000000000000000000000000000..01b9caa2dd9000a6de9da33afe8c6333e7d7fdfc
Binary files /dev/null and b/CheckersClient/android/assets/characters/atlases/MrServer.png differ
diff --git a/CheckersClient/android/assets/characters/atlases/Portraits.atlas b/CheckersClient/android/assets/characters/atlases/Portraits.atlas
new file mode 100644
index 0000000000000000000000000000000000000000..4fdafb10149606cb41a0547680022e1098e29e33
--- /dev/null
+++ b/CheckersClient/android/assets/characters/atlases/Portraits.atlas
@@ -0,0 +1,55 @@
+
+Portraits.png
+size: 4096, 2048
+format: RGBA8888
+filter: Nearest, Nearest
+repeat: none
+AsianGirlPortrait
+  rotate: false
+  xy: 2, 1004
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
+GrandmaPortrait
+  rotate: false
+  xy: 1004, 2
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
+HighSchoolGuyPortrait
+  rotate: false
+  xy: 1004, 1004
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
+HipsterGirlPortrait
+  rotate: false
+  xy: 3008, 1004
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
+MrServerPortrait
+  rotate: false
+  xy: 2006, 2
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
+RegularGuyPortrait
+  rotate: false
+  xy: 2, 2
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
+RocketGuyPortrait
+  rotate: false
+  xy: 2006, 1004
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
diff --git a/CheckersClient/android/assets/characters/atlases/Portraits.png b/CheckersClient/android/assets/characters/atlases/Portraits.png
new file mode 100644
index 0000000000000000000000000000000000000000..8d5cee4297be4a591288ec538df02d0bbf7d4236
Binary files /dev/null and b/CheckersClient/android/assets/characters/atlases/Portraits.png differ
diff --git a/CheckersClient/android/assets/characters/atlases/RegularGuy.atlas b/CheckersClient/android/assets/characters/atlases/RegularGuy.atlas
new file mode 100644
index 0000000000000000000000000000000000000000..8f20f19e2bf494bd46187ba0626ed6dad60452ff
--- /dev/null
+++ b/CheckersClient/android/assets/characters/atlases/RegularGuy.atlas
@@ -0,0 +1,27 @@
+
+RegularGuy.png
+size: 2048, 2048
+format: RGBA8888
+filter: Nearest, Nearest
+repeat: none
+RegularGuy1
+  rotate: false
+  xy: 2, 2
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
+RegularGuy2
+  rotate: false
+  xy: 2, 1004
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
+RegularGuy3
+  rotate: false
+  xy: 1004, 1004
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
diff --git a/CheckersClient/android/assets/characters/atlases/RegularGuy.png b/CheckersClient/android/assets/characters/atlases/RegularGuy.png
new file mode 100644
index 0000000000000000000000000000000000000000..51663f9086c9cd73424b588861394414de9169a6
Binary files /dev/null and b/CheckersClient/android/assets/characters/atlases/RegularGuy.png differ
diff --git a/CheckersClient/android/assets/characters/atlases/RocketGuy.atlas b/CheckersClient/android/assets/characters/atlases/RocketGuy.atlas
new file mode 100644
index 0000000000000000000000000000000000000000..5346f98324ad83171824f8a71b431a2db46526e2
--- /dev/null
+++ b/CheckersClient/android/assets/characters/atlases/RocketGuy.atlas
@@ -0,0 +1,27 @@
+
+RocketGuy.png
+size: 2048, 2048
+format: RGBA8888
+filter: Nearest, Nearest
+repeat: none
+RocketGuy1x
+  rotate: false
+  xy: 2, 1004
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
+RocketGuy2x
+  rotate: false
+  xy: 2, 2
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
+RocketGuy3x
+  rotate: false
+  xy: 1004, 1004
+  size: 1000, 1000
+  orig: 1000, 1000
+  offset: 0, 0
+  index: -1
diff --git a/CheckersClient/android/assets/characters/atlases/RocketGuy.png b/CheckersClient/android/assets/characters/atlases/RocketGuy.png
new file mode 100644
index 0000000000000000000000000000000000000000..180b8a67cd98d7307de04b23dc614302a0bc00c4
Binary files /dev/null and b/CheckersClient/android/assets/characters/atlases/RocketGuy.png differ
diff --git a/CheckersClient/android/assets/cinematic/CinematicMusic.mp3 b/CheckersClient/android/assets/cinematic/CinematicMusic.mp3
new file mode 100644
index 0000000000000000000000000000000000000000..704fec6dd367e3de9ed0785ec5a11f598201fd78
Binary files /dev/null and b/CheckersClient/android/assets/cinematic/CinematicMusic.mp3 differ
diff --git a/CheckersClient/android/assets/cinematic/Cloud1.png b/CheckersClient/android/assets/cinematic/Cloud1.png
new file mode 100644
index 0000000000000000000000000000000000000000..bb442086e41ac13f3d197451b242476abc628603
Binary files /dev/null and b/CheckersClient/android/assets/cinematic/Cloud1.png differ
diff --git a/CheckersClient/android/assets/cinematic/Cloud2.png b/CheckersClient/android/assets/cinematic/Cloud2.png
new file mode 100644
index 0000000000000000000000000000000000000000..d8d8f87a79786cf74944a9c239b4e3df44ad61fd
Binary files /dev/null and b/CheckersClient/android/assets/cinematic/Cloud2.png differ
diff --git a/CheckersClient/android/assets/cinematic/Cloud3.png b/CheckersClient/android/assets/cinematic/Cloud3.png
new file mode 100644
index 0000000000000000000000000000000000000000..725e50e800545898e797867124e41a582aa74d66
Binary files /dev/null and b/CheckersClient/android/assets/cinematic/Cloud3.png differ
diff --git a/CheckersClient/android/assets/cinematic/Cloud4.png b/CheckersClient/android/assets/cinematic/Cloud4.png
new file mode 100644
index 0000000000000000000000000000000000000000..44fa2cb62ce53ba0cbacd0880c2b8ff089f16c91
Binary files /dev/null and b/CheckersClient/android/assets/cinematic/Cloud4.png differ
diff --git a/CheckersClient/android/assets/cinematic/Cloud5.png b/CheckersClient/android/assets/cinematic/Cloud5.png
new file mode 100644
index 0000000000000000000000000000000000000000..c4df1e05b20bd497d3764050a53190f8838dcb02
Binary files /dev/null and b/CheckersClient/android/assets/cinematic/Cloud5.png differ
diff --git a/CheckersClient/android/assets/cinematic/Cloud6.png b/CheckersClient/android/assets/cinematic/Cloud6.png
new file mode 100644
index 0000000000000000000000000000000000000000..cc424ea24795d11cd34f19e489e1232a19100aa6
Binary files /dev/null and b/CheckersClient/android/assets/cinematic/Cloud6.png differ
diff --git a/CheckersClient/android/assets/cinematic/Cloud7.png b/CheckersClient/android/assets/cinematic/Cloud7.png
new file mode 100644
index 0000000000000000000000000000000000000000..e3db6a487c35fbf3887f431cc01c901d1ce08cc2
Binary files /dev/null and b/CheckersClient/android/assets/cinematic/Cloud7.png differ
diff --git a/CheckersClient/android/assets/cinematic/Cloud8.png b/CheckersClient/android/assets/cinematic/Cloud8.png
new file mode 100644
index 0000000000000000000000000000000000000000..f2d6563a67fa7a8b8188212fa1c9d07160340c7a
Binary files /dev/null and b/CheckersClient/android/assets/cinematic/Cloud8.png differ
diff --git a/CheckersClient/android/assets/cinematic/atlas/Cloud.atlas b/CheckersClient/android/assets/cinematic/atlas/Cloud.atlas
new file mode 100644
index 0000000000000000000000000000000000000000..6e046584814de1c6217ef17b82aa8532b549d379
--- /dev/null
+++ b/CheckersClient/android/assets/cinematic/atlas/Cloud.atlas
@@ -0,0 +1,62 @@
+
+Cloud.png
+size: 1024, 512
+format: RGBA8888
+filter: Nearest, Nearest
+repeat: none
+Cloud1
+  rotate: false
+  xy: 2, 205
+  size: 299, 280
+  orig: 299, 280
+  offset: 0, 0
+  index: -1
+Cloud2
+  rotate: false
+  xy: 303, 238
+  size: 280, 247
+  orig: 280, 247
+  offset: 0, 0
+  index: -1
+Cloud3
+  rotate: false
+  xy: 2, 11
+  size: 210, 192
+  orig: 210, 192
+  offset: 0, 0
+  index: -1
+Cloud4
+  rotate: false
+  xy: 727, 316
+  size: 117, 169
+  orig: 117, 169
+  offset: 0, 0
+  index: -1
+Cloud5
+  rotate: false
+  xy: 585, 315
+  size: 140, 170
+  orig: 140, 170
+  offset: 0, 0
+  index: -1
+Cloud6
+  rotate: false
+  xy: 846, 373
+  size: 111, 112
+  orig: 111, 112
+  offset: 0, 0
+  index: -1
+Cloud7
+  rotate: false
+  xy: 214, 94
+  size: 109, 109
+  orig: 109, 109
+  offset: 0, 0
+  index: -1
+Cloud8
+  rotate: false
+  xy: 214, 2
+  size: 80, 90
+  orig: 80, 90
+  offset: 0, 0
+  index: -1
diff --git a/CheckersClient/android/assets/cinematic/atlas/Cloud.png b/CheckersClient/android/assets/cinematic/atlas/Cloud.png
new file mode 100644
index 0000000000000000000000000000000000000000..c1478599adc99e6c2d635dac8b4038deba2282e2
Binary files /dev/null and b/CheckersClient/android/assets/cinematic/atlas/Cloud.png differ
diff --git a/CheckersClient/android/assets/cinematic/atlas/CountDown.atlas b/CheckersClient/android/assets/cinematic/atlas/CountDown.atlas
new file mode 100644
index 0000000000000000000000000000000000000000..6648bd910a9a2617c548643a3d97c6f08ea4e1cd
--- /dev/null
+++ b/CheckersClient/android/assets/cinematic/atlas/CountDown.atlas
@@ -0,0 +1,27 @@
+
+CountDown.png
+size: 2048, 512
+format: RGBA8888
+filter: Nearest, Nearest
+repeat: none
+CountDown1
+  rotate: false
+  xy: 354, 2
+  size: 350, 350
+  orig: 350, 350
+  offset: 0, 0
+  index: -1
+CountDown2
+  rotate: false
+  xy: 2, 2
+  size: 350, 350
+  orig: 350, 350
+  offset: 0, 0
+  index: -1
+CountDown3
+  rotate: false
+  xy: 706, 2
+  size: 350, 350
+  orig: 350, 350
+  offset: 0, 0
+  index: -1
diff --git a/CheckersClient/android/assets/cinematic/atlas/CountDown.png b/CheckersClient/android/assets/cinematic/atlas/CountDown.png
new file mode 100644
index 0000000000000000000000000000000000000000..fc91e7a03b368fda24e51f83dc032efa54c4147e
Binary files /dev/null and b/CheckersClient/android/assets/cinematic/atlas/CountDown.png differ
diff --git a/CheckersClient/core/src/com/mygdx/game/UniCheckersClient.java b/CheckersClient/core/src/com/mygdx/game/UniCheckersClient.java
index ea4236b4da74e07d4c5d0207dc53d482bc40f553..f3cb846ddc82557b1a58e95d299c2172690fadd0 100644
--- a/CheckersClient/core/src/com/mygdx/game/UniCheckersClient.java
+++ b/CheckersClient/core/src/com/mygdx/game/UniCheckersClient.java
@@ -12,9 +12,14 @@ import com.badlogic.gdx.utils.viewport.FitViewport;
 import com.badlogic.gdx.utils.viewport.Viewport;
 import com.mygdx.game.controllers.NetworkController;
 import com.mygdx.game.controllers.PlayerController;
+import com.mygdx.game.views.CinematicView;
 import com.mygdx.game.views.GameViewManager;
 import com.mygdx.game.views.LoadingView;
 import com.mygdx.game.views.PlayView;
+import com.mygdx.game.views.enums.CharacterAssets;
+import com.mygdx.game.views.enums.CinematicAssets;
+import com.mygdx.game.views.enums.LobbyAssets;
+import com.mygdx.game.views.enums.MenuAssets;
 
 import java.util.ArrayList;
 
@@ -55,8 +60,8 @@ public class UniCheckersClient extends ApplicationAdapter {
 		skin = new Skin(Gdx.files.internal("UISkins/glassy/skin/glassy-ui.json"));
 		gvm = new GameViewManager();
 
-
 		gvm.push(new LoadingView(gvm, playerController, assetManager, stage, skin));
+		//gvm.push(new CinematicView(gvm, playerController, assetManager, stage, skin));
 		//gvm.push(new PlayView(gvm, playerController, assetManager, stage, skin));
 
 	}
diff --git a/CheckersClient/core/src/com/mygdx/game/controllers/NetworkController.java b/CheckersClient/core/src/com/mygdx/game/controllers/NetworkController.java
index dfdbb501915317c049054cfdd6905e1b9d7ec494..b81be10ebd3bc8eadfe6d22d8d4e336dfd292add 100644
--- a/CheckersClient/core/src/com/mygdx/game/controllers/NetworkController.java
+++ b/CheckersClient/core/src/com/mygdx/game/controllers/NetworkController.java
@@ -1,22 +1,14 @@
 package com.mygdx.game.controllers;
 
-import com.badlogic.gdx.utils.Queue;
 import com.esotericsoftware.kryo.Kryo;
 import com.esotericsoftware.kryonet.Client;
-import com.esotericsoftware.kryonet.Server;
-import com.mygdx.game.UniCheckersClient;
 import com.mygdx.game.controllers.commands.Command;
 import com.mygdx.game.controllers.commands.*;
 import com.mygdx.game.model.Lobby;
 import com.mygdx.game.model.Player;
-import com.mygdx.game.views.tokens.PlayerAvatar;
-
-import org.javatuples.Pair;
-import org.javatuples.Tuple;
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.LinkedList;
 
 public class NetworkController {
 
diff --git a/CheckersClient/core/src/com/mygdx/game/views/CinematicView.java b/CheckersClient/core/src/com/mygdx/game/views/CinematicView.java
new file mode 100644
index 0000000000000000000000000000000000000000..139aa54ba420c5b53f88bf02a61c23744044bbba
--- /dev/null
+++ b/CheckersClient/core/src/com/mygdx/game/views/CinematicView.java
@@ -0,0 +1,280 @@
+package com.mygdx.game.views;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.assets.AssetManager;
+import com.badlogic.gdx.audio.Music;
+import com.badlogic.gdx.audio.Sound;
+import com.badlogic.gdx.graphics.Camera;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.TextureAtlas;
+import com.badlogic.gdx.graphics.g2d.TextureRegion;
+import com.badlogic.gdx.scenes.scene2d.Stage;
+import com.badlogic.gdx.scenes.scene2d.ui.Image;
+import com.badlogic.gdx.scenes.scene2d.ui.Skin;
+import com.mygdx.game.controllers.PlayerController;
+import com.mygdx.game.views.enums.CharacterAssets;
+import com.mygdx.game.views.enums.CinematicAssets;
+import com.mygdx.game.views.enums.LobbyAssets;
+import com.mygdx.game.views.enums.MenuAssets;
+import com.mygdx.game.views.tokens.AnimatedSprite;
+
+import java.util.ArrayList;
+
+
+public class CinematicView extends View{
+
+    private final Image lobbyImage;
+    private final Image backgroundImage;
+    private final Image rocketImage;
+    private final Image exhaustImage;
+    private final AnimatedSprite countDownAnimationSprite;
+
+    private ArrayList<AnimatedSprite> lobbyAvatars;
+    private final float keyframe1;
+    private final float keyframe2;
+    private final float keyframe3;
+    private final float keyframe4;
+    private final Music cinematicSound;
+    private float fadeInVolume;
+    private TextureAtlas cloudAtlas;
+    private TextureAtlas countDownAtlas;
+    private AnimatedSprite cloudSprite;
+    private float updateSpritesTimer;
+    private float updateAvatarFrequency = 0.120f;
+    private float timer = 0;
+    private final Camera cam;
+
+    boolean onlyOnce1 = true;
+    boolean onlyOnce2 = true;
+    boolean onlyOnce3 = true;
+
+    public CinematicView(GameViewManager gvm, PlayerController playerController, AssetManager assetManager, Stage stage, Skin skin, ArrayList<AnimatedSprite> lobbyAvatars) {
+        super(gvm, playerController, assetManager, stage, skin);
+
+        rocketImage = new Image((Texture) assetManager.get(LobbyAssets.ROCKET_SMALL.path, LobbyAssets.ROCKET_SMALL.classType));
+        rocketImage.setPosition(1556, 360);
+
+        countDownAtlas = (TextureAtlas)assetManager.get(CinematicAssets.COUNT_DOWN_ATLAS.path, CinematicAssets.COUNT_DOWN_ATLAS.classType);
+        cam = stage.getCamera();
+        cam.position.set(rocketImage.getX()+rocketImage.getWidth()/2, cam.viewportHeight/2, 0);
+
+        this.lobbyAvatars = lobbyAvatars;
+        fadeInLength = 0.5f;
+        fadeOutLength= 0.25f;
+
+        backgroundImage = new Image((Texture) assetManager.get(LobbyAssets.BACKGROUND.path, LobbyAssets.BACKGROUND.classType));
+
+        countDownAnimationSprite = new AnimatedSprite(
+                countDownAtlas, new TextureRegion ( (Texture) assetManager.get(MenuAssets.RED_CIRCLE_SMALL.path,
+                MenuAssets.RED_CIRCLE_SMALL.classType)),
+                "CountDown",
+                3);
+        countDownAnimationSprite.setPosition(cam.position.x-countDownAnimationSprite.getWidth()/2, rocketImage.getY()+rocketImage.getHeight()/2+countDownAnimationSprite.getHeight()/2);
+        countDownAnimationSprite.setAlpha(0);
+
+        exhaustImage = new Image((Texture) assetManager.get(LobbyAssets.ROCKET_EXHAUST.path, LobbyAssets.ROCKET_EXHAUST.classType));
+        exhaustImage.setSize(rocketImage.getHeight()/3, rocketImage.getHeight()/2);
+        exhaustImage.setPosition(rocketImage.getX()+rocketImage.getWidth()/2-exhaustImage.getWidth()/2, rocketImage.getY()-exhaustImage.getHeight());
+        exhaustImage.setColor(1, 1, 1, 0);
+
+        lobbyImage = new Image((Texture) assetManager.get(LobbyAssets.LOBBY.path, LobbyAssets.LOBBY.classType));
+        lobbyImage.setPosition(774, 192);
+
+        cinematicSound = (Music) assetManager.get(CinematicAssets.CINEMATIC_AUDIO.path, CinematicAssets.CINEMATIC_AUDIO.classType);
+
+        cloudAtlas = (TextureAtlas) assetManager.get(CinematicAssets.CLOUD_ATLAS.path, CinematicAssets.CLOUD_ATLAS.classType);
+        TextureRegion texReg = cloudAtlas.findRegion("Cloud1");
+        cloudSprite = new AnimatedSprite(cloudAtlas, texReg, "Cloud", 8);
+        cloudSprite.setPosition(774+lobbyImage.getWidth()/2, 140);
+        cloudSprite.setAlpha(0);
+        cloudSprite.setOrigin(0, 0);
+        countDownAnimationSprite.updateTexture();
+        countDownAnimationSprite.updateTexture();
+
+        setFadeColor(Color.BLACK);
+        stage.addActor(backgroundImage);
+        stage.addActor(lobbyImage);
+        stage.addActor(exhaustImage);
+        stage.addActor(rocketImage);
+
+        keyframe1 = 1.05f*1.92f;
+        keyframe2 = 2.1f*1.92f;
+        keyframe3 = 3.15f*1.92f;
+        keyframe4 = 3.3f*1.92f;
+
+
+    }
+
+    public CinematicView(GameViewManager gvm, PlayerController playerController, AssetManager assetManager, Stage stage, Skin skin){
+        this(gvm, playerController, assetManager, stage, skin, new ArrayList<AnimatedSprite>());
+
+        AnimatedSprite asianGirl = new AnimatedSprite(
+                (TextureAtlas) assetManager.get(CharacterAssets.AsianGirlAtlas.path, CharacterAssets.AsianGirlAtlas.classType),
+                new TextureRegion ( (Texture) assetManager.get(MenuAssets.RED_CIRCLE_SMALL.path, MenuAssets.RED_CIRCLE_SMALL.classType)),
+                "AsianGirl",
+                3);
+
+        AnimatedSprite regularGuy = new AnimatedSprite(
+                (TextureAtlas) assetManager.get(CharacterAssets.RegularGuyAtlas.path, CharacterAssets.RegularGuyAtlas.classType),
+                new TextureRegion ( (Texture) assetManager.get(MenuAssets.RED_CIRCLE_SMALL.path, MenuAssets.RED_CIRCLE_SMALL.classType)),
+                "RegularGuy",
+                3);
+
+        int xPad = 10;
+        int remX = 0;
+        int remY = 0;
+
+        asianGirl.setPosition(lobbyImage.getX()-xPad+remX*((lobbyImage.getWidth()-xPad)/4), lobbyImage.getY()-remY*(lobbyImage.getHeight()/7.5f));
+        asianGirl.setScale(0.3f+0.025f*remY, 0.3f+0.025f*remY);
+        asianGirl.setOrigin(0, 0);
+
+        remX = 1;
+        remY = 0;
+
+        regularGuy.setPosition(lobbyImage.getX()-xPad+remX*((lobbyImage.getWidth()-xPad)/4), lobbyImage.getY()-remY*(lobbyImage.getHeight()/7.5f));
+        regularGuy.setScale(0.3f+0.025f*remY, 0.3f+0.025f*remY);
+        regularGuy.setOrigin(0, 0);
+
+        lobbyAvatars.add(asianGirl);
+        lobbyAvatars.add(regularGuy);
+        stage.addActor(backgroundImage);
+        stage.addActor(lobbyImage);
+        stage.addActor(exhaustImage);
+        stage.addActor(rocketImage);
+
+    }
+
+
+    @Override
+    public void handleInput(float dt) {
+
+    }
+    float cloudSpriteAlpha = 1;
+
+    @Override
+    public void update(float dt) {
+
+        if(startFadeIn){
+
+        }
+        else{
+            updateSpritesTimer+= dt;
+            if(0<= timer && timer <= keyframe1){
+                System.out.println("KEYFRAME 1!!");
+                for(AnimatedSprite lobbyAvatar : lobbyAvatars){
+                    if(updateSpritesTimer >= updateAvatarFrequency) {
+                        lobbyAvatar.updateTexture();
+                    }
+                    lobbyAvatar.translateX(1);
+                }
+            }
+            if(keyframe1 <= timer &&  timer <= keyframe2){
+                System.out.println("KEYFRAME 2!!");
+                if(onlyOnce1){
+                    cloudSprite.setAlpha(1);
+                    countDownAnimationSprite.updateTexture();
+                    onlyOnce1 = false;
+                }
+                for(AnimatedSprite lobbyAvatar : lobbyAvatars){
+                    lobbyAvatar.translateX(50);
+                    if(lobbyAvatar.getX() >= cloudSprite.getX()+cloudSprite.getWidth()/2){
+                        lobbyAvatar.setAlpha( 0);
+                    }
+                }
+            }
+            if(keyframe2 <= timer &&  timer <= keyframe3){
+                if(onlyOnce2) {
+                    countDownAnimationSprite.updateTexture();
+                    exhaustImage.setColor(1, 1, 1, 1);
+                    onlyOnce2 = false;
+                }
+                rocketImage.setPosition(rocketImage.getX(), rocketImage.getY()+3);
+                exhaustImage.setPosition(exhaustImage.getX(), exhaustImage.getY()+3);
+                cam.position.set(rocketImage.getX(), rocketImage.getY(), 0);
+                System.out.println("KEYFRAME 3!!");
+            }
+            if(keyframe3 <= timer &&  timer <= keyframe4){
+                if(onlyOnce3) {
+                    countDownAnimationSprite.setAlpha(0);
+                    onlyOnce3 = false;
+                }
+                rocketImage.setPosition(rocketImage.getX(), rocketImage.getY()+50);
+                exhaustImage.setPosition(exhaustImage.getX(), exhaustImage.getY()+50);
+                System.out.println("KEYFRAME 4!!");
+                cloudSpriteAlpha -= dt*2;
+                cloudSprite.setAlpha(cloudSpriteAlpha);
+            }
+            if(timer>keyframe4){
+                startFadeout=true;
+                cloudSpriteAlpha -= dt*2;
+                cloudSprite.setAlpha(cloudSpriteAlpha);
+            }
+
+            if(updateSpritesTimer >= updateAvatarFrequency) {
+                cloudSprite.updateTexture();
+                updateSpritesTimer = 0;
+            }
+            //rocketImage.setPosition(rocketImage.getX(), rocketImage.getY()+3);
+            //exhaustImage.setPosition(exhaustImage.getX(), exhaustImage.getY()+3);
+            timer += dt;
+        }
+    }
+
+
+    @Override
+    public void render(float dt) {
+        stage.draw();
+        stage.getBatch().begin();
+
+        for(AnimatedSprite animatedSprite : lobbyAvatars){
+            animatedSprite.draw(stage.getBatch());
+        }
+
+        countDownAnimationSprite.draw(stage.getBatch());
+        cloudSprite.draw(stage.getBatch());
+
+
+        stage.getBatch().end();
+    }
+
+    @Override
+    public void fadeIn(float dt) {
+        stage.getBatch().begin();
+        Color c = stage.getBatch().getColor();
+        stage.getBatch().setColor(c.r, c.g, c.b, fadeOutAlpha);
+        fadeInAlpha -= dt/fadeInLength;
+        stage.getBatch().draw(fadeOverlayTexture, 0, 0, col_width*Help_Guides, row_height*Help_Guides);
+        stage.getBatch().setColor(c);
+        stage.getBatch().end();
+
+        if(fadeInAlpha <= 0){
+            countDownAnimationSprite.setAlpha(1);
+            cinematicSound.play();
+            startFadeIn = false;
+        }
+        fadeInVolume += dt/fadeOutLength;
+    }
+
+    @Override
+    public void fadeOut(float dt) {
+        stage.getBatch().begin();
+        Color c = stage.getBatch().getColor();
+        stage.getBatch().setColor(c.r, c.g, c.b, fadeOutAlpha);
+        fadeOutAlpha += dt/fadeOutLength;
+        stage.getBatch().draw(fadeOverlayTexture, cam.position.x-cam.viewportWidth/2, cam.position.y-cam.viewportHeight/2, col_width*Help_Guides, row_height*Help_Guides);
+        stage.getBatch().setColor(c);
+        stage.getBatch().end();
+
+        if(fadeOutAlpha >= 1){
+            stage.clear();
+            startFadeout = false;
+            gvm.set(new PlayView(gvm, playerController, assetManager, stage, skin, lobbyAvatars));
+        }
+    }
+
+    @Override
+    public void dispose() {
+        stage.dispose();
+    }
+}
diff --git a/CheckersClient/core/src/com/mygdx/game/views/LoadingView.java b/CheckersClient/core/src/com/mygdx/game/views/LoadingView.java
index b2fb3310a276b52120e5c734d11b2054bf593da1..ffdadf1d75bd490ed8475a8f40941bdf80d37b19 100644
--- a/CheckersClient/core/src/com/mygdx/game/views/LoadingView.java
+++ b/CheckersClient/core/src/com/mygdx/game/views/LoadingView.java
@@ -70,7 +70,6 @@ public class LoadingView extends View {
         stage.getBatch().setColor(c.r, c.g, c.b, fadeInAlpha);
         fadeInAlpha -= dt/fadeInLength;
         stage.getBatch().draw(fadeOverlayTexture, 0, 0, col_width*Help_Guides, row_height*Help_Guides);
-        //stage.getBatch().setColor(c);
         stage.getBatch().end();
 
         if(fadeInAlpha <= 0){
diff --git a/CheckersClient/core/src/com/mygdx/game/views/LobbyPlayTransitionScreen.java b/CheckersClient/core/src/com/mygdx/game/views/LobbyPlayTransitionScreen.java
deleted file mode 100644
index 0b65397d8c7696fe14eac2083baf4e74cddf5407..0000000000000000000000000000000000000000
--- a/CheckersClient/core/src/com/mygdx/game/views/LobbyPlayTransitionScreen.java
+++ /dev/null
@@ -1,109 +0,0 @@
-package com.mygdx.game.views;
-
-import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.Input;
-import com.badlogic.gdx.assets.AssetManager;
-import com.badlogic.gdx.audio.Sound;
-import com.badlogic.gdx.graphics.Color;
-import com.badlogic.gdx.graphics.Texture;
-import com.badlogic.gdx.graphics.g2d.BitmapFont;
-import com.badlogic.gdx.graphics.g2d.SpriteBatch;
-import com.badlogic.gdx.scenes.scene2d.Stage;
-import com.badlogic.gdx.scenes.scene2d.ui.Image;
-import com.badlogic.gdx.scenes.scene2d.ui.Skin;
-import com.mygdx.game.controllers.PlayerController;
-import com.mygdx.game.views.enums.LobbyAssets;
-import com.mygdx.game.views.tokens.PlayerAvatar;
-
-import java.util.ArrayList;
-
-
-public class LobbyPlayTransitionScreen extends View{
-
-    private Texture background;
-    private Texture rocketTexture;
-    private Texture exhaustTexture;
-    private Image rocketImage;
-    private Image whiteImage;
-    private Image exhaustImage;
-    private Image backgroundImage;
-    private ArrayList<PlayerAvatar> availableAvatars;
-
-    protected LobbyPlayTransitionScreen(GameViewManager gvm, PlayerController playerController, AssetManager assetManager, Stage stage, Skin skin, ArrayList<PlayerAvatar> availableAvatars) {
-        super(gvm, playerController, assetManager, stage, skin);
-        background = (Texture) assetManager.get(LobbyAssets.BACKGROUND.path, LobbyAssets.BACKGROUND.classType);
-        rocketTexture = (Texture) assetManager.get(LobbyAssets.ROCKET.path, LobbyAssets.ROCKET.classType);
-        exhaustTexture = (Texture) assetManager.get(LobbyAssets.ROCKET_EXHAUST.path, LobbyAssets.ROCKET_EXHAUST.classType);
-
-        this.availableAvatars = availableAvatars;
-        backgroundImage = new Image(background);
-        rocketImage = new Image(rocketTexture);
-        rocketImage.setSize(200, 270);
-        rocketImage.setPosition(Gdx.graphics.getWidth()/2+40, 370);
-        rocketImage.setOrigin(0,0);
-
-        exhaustImage = new Image(exhaustTexture);
-        exhaustImage.setSize(col_width*0.6f, row_height*2f);
-        exhaustImage.setPosition(rocketImage.getX()+rocketImage.getWidth()/2-exhaustImage.getWidth()/2, rocketImage.getY()-exhaustImage.getHeight());
-        exhaustImage.setColor(1, 1, 1, 0);
-
-        setFadeColor(Color.BLACK);
-        stage.addActor(backgroundImage);
-    }
-
-
-    @Override
-    public void handleInput(float dt) {
-
-    }
-
-    @Override
-    public void update(float dt) {
-        stage.act(dt);
-    }
-
-
-    @Override
-    public void render(float dt) {
-        stage.getBatch().begin();
-        stage.getBatch().draw(background, 0, 0);
-        stage.getBatch().end();
-        stage.draw();
-    }
-
-    @Override
-    public void fadeIn(float dt) {
-        stage.getBatch().begin();
-        Color c = stage.getBatch().getColor();
-        stage.getBatch().setColor(c.r, c.g, c.b, fadeOutAlpha);
-        fadeInAlpha -= dt/fadeInLength;
-        stage.getBatch().draw(fadeOverlayTexture, 0, 0, col_width*Help_Guides, row_height*Help_Guides);
-        stage.getBatch().setColor(c);
-        stage.getBatch().end();
-
-        if(fadeInAlpha <= 0){
-            startFadeIn = false;
-        }
-    }
-
-    @Override
-    public void fadeOut(float dt) {
-        stage.getBatch().begin();
-        Color c = stage.getBatch().getColor();
-        stage.getBatch().setColor(c.r, c.g, c.b, fadeOutAlpha);
-        fadeOutAlpha += dt/fadeOutLength;
-        stage.getBatch().draw(fadeOverlayTexture, 0, 0, col_width*Help_Guides, row_height*Help_Guides);
-        stage.getBatch().setColor(c);
-        stage.getBatch().end();
-        if(fadeOutAlpha >= 1){
-            stage.clear();
-            startFadeout = false;
-            gvm.set(new PlayView(gvm, playerController, assetManager, stage, skin, availableAvatars));
-        }
-    }
-
-    @Override
-    public void dispose() {
-        stage.dispose();
-    }
-}
diff --git a/CheckersClient/core/src/com/mygdx/game/views/LobbyView.java b/CheckersClient/core/src/com/mygdx/game/views/LobbyView.java
index c4ab7b9b318f2fdbcfd022b7fc8c832a3254a577..1fae377e59ff69f1ac755ae8ffb528aa3ceec3fe 100644
--- a/CheckersClient/core/src/com/mygdx/game/views/LobbyView.java
+++ b/CheckersClient/core/src/com/mygdx/game/views/LobbyView.java
@@ -1,20 +1,18 @@
 package com.mygdx.game.views;
 
 import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.Input;
-import com.badlogic.gdx.InputProcessor;
 import com.badlogic.gdx.assets.AssetManager;
+import com.badlogic.gdx.audio.Music;
 import com.badlogic.gdx.audio.Sound;
 import com.badlogic.gdx.graphics.Camera;
 import com.badlogic.gdx.graphics.Color;
 import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.TextureAtlas;
 import com.badlogic.gdx.math.MathUtils;
-import com.badlogic.gdx.math.Vector2;
 import com.badlogic.gdx.scenes.scene2d.Actor;
 import com.badlogic.gdx.scenes.scene2d.InputEvent;
 import com.badlogic.gdx.scenes.scene2d.InputListener;
 import com.badlogic.gdx.scenes.scene2d.Stage;
-import com.badlogic.gdx.scenes.scene2d.Touchable;
 import com.badlogic.gdx.scenes.scene2d.ui.Button;
 import com.badlogic.gdx.scenes.scene2d.ui.Image;
 import com.badlogic.gdx.scenes.scene2d.ui.ImageButton;
@@ -25,15 +23,16 @@ import com.badlogic.gdx.scenes.scene2d.ui.SelectBox;
 import com.badlogic.gdx.scenes.scene2d.ui.Skin;
 import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
 import com.badlogic.gdx.scenes.scene2d.ui.TextField;
-import com.badlogic.gdx.scenes.scene2d.ui.Touchpad;
 import com.badlogic.gdx.utils.Align;
 
 import com.mygdx.game.controllers.PlayerController;
 import com.mygdx.game.model.Lobby;
 import com.mygdx.game.model.Player;
+import com.mygdx.game.views.enums.CharacterAssets;
+import com.mygdx.game.views.enums.CinematicAssets;
 import com.mygdx.game.views.enums.LobbyAssets;
 import com.mygdx.game.views.enums.MenuAssets;
-import com.mygdx.game.views.tokens.PlayerAvatar;
+import com.mygdx.game.views.tokens.AnimatedSprite;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -42,6 +41,8 @@ import java.util.HashMap;
 public class LobbyView extends View{
 
     private final ArrayList<Actor> playerUIWidgets = new ArrayList<>();
+    private final Music currentSong;
+    private final TextureAtlas portraitAtlas;
 
     private Button createLobbyButton;
     private Button findLobbyButton;
@@ -55,9 +56,11 @@ public class LobbyView extends View{
     private float updateAvatarTimer = 0;
     private float updateAvatarFrequency = 0.120f; //update every 250ms
     private float refreshLobbyTimer = 1;
+    private float touchSensitivity = 0.1f;
+    private float fadeOutVolume = 0;
 
     private Image backgroundImage;
-    private PlayerAvatar mrServer;
+    private AnimatedSprite mrServer;
     private Image mrServerNameImage;
     private Image exhaustImage;
     private Image lobbyListBubbleImage;
@@ -83,21 +86,29 @@ public class LobbyView extends View{
 
     private Image lobbyImage;
 
-    private final ArrayList<PlayerAvatar> availableAvatars;
-    private ArrayList<PlayerAvatar> lobbyAvatars = new ArrayList<>();
+    private ArrayList<AnimatedSprite> lobbyAvatars = new ArrayList<>();
 
     private ArrayList<Image> playerReadyImages = new ArrayList<>();
     private ArrayList<Label> lobbyLabels= new ArrayList<>();
+    private final HashMap<Integer, String> availableAvatarsHashMap;
 
-
-    public LobbyView(GameViewManager gvm, final PlayerController playerController, AssetManager assetManager, final Stage stage, Skin skin, ArrayList<PlayerAvatar> availableAvatars) {
+    public LobbyView(GameViewManager gvm, final PlayerController playerController, AssetManager assetManager, final Stage stage, Skin skin, HashMap<Integer,String> availableAvatarsHashMap, Music currentSong) {
         super(gvm, playerController, assetManager, stage, skin);
 
-        this.availableAvatars = availableAvatars;
+        this.portraitAtlas = (TextureAtlas) assetManager.get(CharacterAssets.PortraitsAtlas.path, CharacterAssets.PortraitsAtlas.classType);
+
+        this.currentSong = currentSong;
+        fadeOutVolume = currentSong.getVolume();
 
         buttonClickAudio = (Sound) assetManager.get(MenuAssets.BUTTON_CLICK_AUDIO.path, MenuAssets.BUTTON_CLICK_AUDIO.classType);
         this.camera = stage.getCamera();
 
+        this.availableAvatarsHashMap = availableAvatarsHashMap;
+
+        for(CinematicAssets asset : CinematicAssets.values()) {
+            assetManager.load(asset.path, asset.classType);
+        }
+
         Image playerReadyCheck = new Image((Texture) assetManager.get(LobbyAssets.PLAYER_READY_CHECK.path, Texture.class));
         playerReadyCheckButton = new ImageButton(playerReadyCheck.getDrawable());
         playerReadyCheckButton.setPosition(col_width*6, row_height*2);
@@ -105,42 +116,33 @@ public class LobbyView extends View{
         backgroundImage = new Image((Texture) assetManager.get(LobbyAssets.BACKGROUND.path, LobbyAssets.BACKGROUND.classType));
         stage.getViewport().setWorldSize(backgroundImage.getWidth(), backgroundImage.getHeight());
 
-        rocketImage = new Image((Texture) assetManager.get(LobbyAssets.ROCKET.path, LobbyAssets.ROCKET.classType));
-        rocketImage.setSize(200, 270);
-        rocketImage.setPosition(Gdx.graphics.getWidth()/2+40, 370);
-        rocketImage.setOrigin(0,0);
+        rocketImage = new Image((Texture) assetManager.get(LobbyAssets.ROCKET_SMALL.path, LobbyAssets.ROCKET_SMALL.classType));
+        rocketImage.setPosition(1556, 360);
+
 
         exhaustImage = new Image((Texture) assetManager.get(LobbyAssets.ROCKET_EXHAUST.path, LobbyAssets.ROCKET_EXHAUST.classType));
-        exhaustImage.setSize(col_width*0.6f, row_height*2f);
+        exhaustImage.setSize(rocketImage.getHeight()/6, rocketImage.getHeight()/2);
         exhaustImage.setPosition(rocketImage.getX()+rocketImage.getWidth()/2-exhaustImage.getWidth()/2, rocketImage.getY()-exhaustImage.getHeight());
         exhaustImage.setColor(1, 1, 1, 0);
 
-        lobbyListBubbleImage = new Image((Texture) assetManager.get(LobbyAssets.MR_SERVER_BUBBLE_SQUARE.path, LobbyAssets.MR_SERVER_BUBBLE_SQUARE.classType));
-
-        Texture mrServerAnim1 = (Texture) assetManager.get(LobbyAssets.MR_SERVER_ANIM1.path, LobbyAssets.MR_SERVER_ANIM1.classType);
-        Texture mrServerAnim2 = (Texture) assetManager.get(LobbyAssets.MR_SERVER_ANIM2.path, LobbyAssets.MR_SERVER_ANIM2.classType);
-        Texture mrServerAnim3 = (Texture) assetManager.get(LobbyAssets.MR_SERVER_ANIM3.path, LobbyAssets.MR_SERVER_ANIM3.classType);
-
-        ArrayList<Texture> mrServerAnimTextures= new ArrayList<>(Arrays.asList(mrServerAnim1, mrServerAnim2, mrServerAnim3));
-
-        mrServer = new PlayerAvatar( mrServerAnimTextures, (Texture) assetManager.get(LobbyAssets.MR_SERVER_PORTRAIT.path, LobbyAssets.MR_SERVER_PORTRAIT.classType), "Mr. Server");
-
-        //mrServer.setPosition(247.5426f, 1 );
 
+        TextureAtlas portraitAtlas = (TextureAtlas)assetManager.get(CharacterAssets.PortraitsAtlas.path, CharacterAssets.PortraitsAtlas.classType);
+        mrServer = new AnimatedSprite( (TextureAtlas) assetManager.get(LobbyAssets.MR_SERVER_ATLAS.path, LobbyAssets.MR_SERVER_ATLAS.classType),
+                portraitAtlas.findRegion("MrServerPortrait"),
+                "MrServer",
+                3);
         mrServer.scale(-0.63f);
         mrServer.setOrigin(0,0 );
         mrServer.setOriginBasedPosition(190, 1);
 
-
         mrServerNameImage = new Image((Texture) assetManager.get(LobbyAssets.MR_SERVER_NAME.path, LobbyAssets.MR_SERVER_NAME.classType));
         mrServerNameImage.setPosition(180+mrServerNameImage.getWidth()/2, 360);
 
         lobbyImage = new Image((Texture) assetManager.get(LobbyAssets.LOBBY.path, LobbyAssets.LOBBY.classType));
-        lobbyImage.setPosition(774, 4320-4127.6141f);
+        lobbyImage.setPosition(774, 192);
 
-        lobbyListBubbleImage.setPosition(col_width*0.25f, row_height*4.5f);
         lobbyListBubbleImage = new Image((Texture) assetManager.get(LobbyAssets.MR_SERVER_BUBBLE_SQUARE.path, LobbyAssets.MR_SERVER_BUBBLE_SQUARE.classType));
-        lobbyListBubbleImage.setPosition(col_width*0.1f, row_height*4.75f);
+        lobbyListBubbleImage.setPosition(29.535f, 4328-3930);
 
         lobbyListBubblePointerImage = new Image((Texture) assetManager.get(LobbyAssets.MR_SERVER_BUBBLE_POINTER.path, LobbyAssets.MR_SERVER_BUBBLE_POINTER.classType));
         lobbyListBubblePointerImage.setPosition(lobbyListBubbleImage.getX()+lobbyListBubblePointerImage.getWidth()*1.25f, lobbyListBubbleImage.getY()-lobbyListBubblePointerImage.getHeight()+2);
@@ -202,7 +204,6 @@ public class LobbyView extends View{
         lobbyCreateSizeSelectBox.setSize(lobbyListBackButton.getWidth(), lobbyListBackButton.getHeight());
 
         backgroundImage.setZIndex(1);
-        //backgroundImage.setPosition(Gdx.graphics.getWidth()/2-backgroundImage.getWidth()/2, 0);
         backgroundImage.setOrigin(0,0);
 
         stage.addActor(backgroundImage);
@@ -341,6 +342,9 @@ public class LobbyView extends View{
                 }
 
 
+                for (Label label :lobbyLabels) label.remove();
+                for(Image image: playerReadyImages) image.remove();
+                lobbyAvatars.clear();
                 showMainLobbyWindow();
 
             }
@@ -552,20 +556,7 @@ public class LobbyView extends View{
     float[] player7Pos = {col_width*5.7f, row_height*2};
     float[] player8Pos = {col_width*5.5f, row_height*1.5f};
 
-    float[] player1LabelPos = {col_width*0.5f, row_height*9.8f};
-    float[] player2LabelPos = {col_width*0.5f, row_height*9.3f};
-
-    float[] player3LabelPos = {col_width*0.5f, row_height*8.8f};
-    float[] player4LabelPos = {col_width*0.5f, row_height*8.3f};
-
-    float[] player5LabelPos = {col_width*0.5f, row_height*7.8f};
-    float[] player6LabelPos = {col_width*0.5f, row_height*7.3f};
-
-    float[] player7LabelPos = {col_width*0.5f, row_height*6.8f};
-    float[] player8LabelPos = {col_width*0.5f, row_height*6.3f};
-
     ArrayList<float[]> playerPositions= new ArrayList<>(Arrays.asList(player1Pos, player2Pos, player3Pos, player4Pos, player5Pos, player6Pos, player7Pos, player8Pos));;
-    ArrayList<float[]> playerLabelPositions= new ArrayList<>(Arrays.asList(player1LabelPos, player2LabelPos, player3LabelPos, player4LabelPos, player5LabelPos, player6LabelPos, player7LabelPos, player8LabelPos));
 
     private void lobbyRefresh(){
         if(playerController.getLobby().getID() == -1) {
@@ -584,11 +575,27 @@ public class LobbyView extends View{
             for(int i = 0; i<lobby.getPlayers().size(); i++){
                 Player player = lobby.getPlayers().get(i);
 
-                PlayerAvatar playerAvatar =availableAvatars.get(player.getIndexAvatar());
-                playerAvatar.setScale(0.3f, 0.3f);
-                playerAvatar.setOrigin(0, 0);
-                playerAvatar.setPosition(playerPositions.get(i)[0], playerPositions.get(i)[1]);
-                lobbyAvatars.add(playerAvatar);
+                System.out.println("Finding avatar with index:  " + player.getIndexAvatar());
+                System.out.println("Name is:  " + availableAvatarsHashMap.get(player.getIndexAvatar()));
+
+                String path = Enum.valueOf(CharacterAssets.class, availableAvatarsHashMap.get(player.getIndexAvatar())+"Atlas").path;
+                Class classType = Enum.valueOf(CharacterAssets.class, availableAvatarsHashMap.get(player.getIndexAvatar())+"Atlas").classType;
+
+                AnimatedSprite animatedSprite = new AnimatedSprite(
+                        (TextureAtlas) assetManager.get(path, classType),
+                        portraitAtlas.findRegion(availableAvatarsHashMap.get(player.getIndexAvatar())+"Portrait"),
+                        availableAvatarsHashMap.get(player.getIndexAvatar()),
+                        3);
+
+
+                animatedSprite.setOrigin(0, 0);
+                int remX = i%4;
+                int remY = mod(2, i+2);
+                int xPad = 10;
+                System.out.printf("remX: %d\tremY: %d\n", remX, remY);
+                animatedSprite.setPosition(lobbyImage.getX()-xPad+remX*((lobbyImage.getWidth()-xPad)/4), lobbyImage.getY()-remY*(lobbyImage.getHeight()/7.5f));
+                animatedSprite.setScale(0.3f+0.025f*remY, 0.3f+0.025f*remY);
+                lobbyAvatars.add(animatedSprite);
 
                 Label label = new Label("Player"+i+":\t%d" + player.getPlayerName() + "\t", skin, "black");
                 label.setColor(Color.BLACK);
@@ -601,13 +608,10 @@ public class LobbyView extends View{
                     Image image = new Image(assetManager.get(LobbyAssets.PLAYER_READY.path, Texture.class));
                     image.setPosition(label.getX()+image.getWidth()+col_width*1f, label.getY()-image.getHeight()/2+label.getHeight()/2);
                     playerReadyImages.add(image);
-
-                    //System.out.println("ready???");
                 }
                 else{
                     System.out.println("Player is not ready..");
                 }
-
                 stage.addActor(lobbyLabels.get(i));
             }
             for (Image image : playerReadyImages){
@@ -616,6 +620,17 @@ public class LobbyView extends View{
         }
     }
 
+    private int mod(int a, int b)
+    {
+        int c = (a % b + b) % b;
+        if(c == a){
+            return 0;
+        }
+        else{
+            return c;
+        }
+    }
+
 
     private void showLobbyWindow(){
         clearUIWidgets();
@@ -650,8 +665,8 @@ public class LobbyView extends View{
         stage.draw();
         stage.getBatch().begin();
 
-        for(PlayerAvatar playerAvatar : lobbyAvatars){
-            playerAvatar.draw(stage.getBatch());
+        for(AnimatedSprite animatedSprite : lobbyAvatars){
+            animatedSprite.draw(stage.getBatch());
         }
 
         mrServer.draw(stage.getBatch());
@@ -685,15 +700,16 @@ public class LobbyView extends View{
         stage.getBatch().setColor(c);
         stage.getBatch().end();
         if(fadeOutAlpha >= 1){
+            currentSong.stop();
             stage.clear();
             startFadeout = false;
             setFadeColor(Color.BLACK);
-            gvm.set(new LobbyPlayTransitionScreen(gvm, playerController, assetManager, stage, skin, availableAvatars));
+            gvm.set(new CinematicView(gvm, playerController, assetManager, stage, skin, lobbyAvatars));
         }
-    }
 
-    boolean isDragging = false;
-    float sensitivity = 0.1f;
+        fadeOutVolume -= dt/fadeOutLength;
+        currentSong.setVolume(fadeOutVolume);
+    }
 
     @Override
     public void handleInput(float dt) {
@@ -703,9 +719,8 @@ public class LobbyView extends View{
             System.out.println("Only once");
         }
         if(Gdx.input.isTouched()){
-
-            float camXPos = camera.position.x + (lastTouch[0]-Gdx.input.getX())*sensitivity; //camera.position.x + (Gdx.input.getX()-lastTouch[0])*sensitivity;
-            float camYPos = camera.position.y + (-stage.getViewport().getScreenHeight()+Gdx.input.getY()+lastTouch[1])*sensitivity;
+            float camXPos = camera.position.x + (lastTouch[0]-Gdx.input.getX())* touchSensitivity; //camera.position.x + (Gdx.input.getX()-lastTouch[0])*sensitivity;
+            float camYPos = camera.position.y + (-stage.getViewport().getScreenHeight()+Gdx.input.getY()+lastTouch[1])* touchSensitivity;
 
             float a = MathUtils.clamp(camXPos, camera.viewportWidth/2, backgroundImage.getWidth()-camera.viewportWidth/2);
             float b = MathUtils.clamp(camYPos, camera.viewportHeight/2, backgroundImage.getImageHeight()-camera.viewportHeight/2);
@@ -721,13 +736,14 @@ public class LobbyView extends View{
     public void update(float dt) {
         stage.getCamera().update();
 
+        assetManager.update();
 
         updateAvatarTimer+= dt;
         refreshLobbyTimer += dt;
 
-        if(updateAvatarTimer>= updateAvatarFrequency){
-            for(PlayerAvatar playerAvatar : lobbyAvatars){
-                playerAvatar.updateTexture();
+        if(updateAvatarTimer-1/Gdx.graphics.getFramesPerSecond()/2>= updateAvatarFrequency){
+            for(AnimatedSprite animatedSprite : lobbyAvatars){
+                animatedSprite.updateTexture();
             }
             mrServer.updateTexture();
             updateAvatarTimer=0;
@@ -738,7 +754,6 @@ public class LobbyView extends View{
             refreshLobbyTimer=0;
         }
 
-
         stage.act(dt);
 
         if(playerController.getLobby().getLobbyGameStarted()){
diff --git a/CheckersClient/core/src/com/mygdx/game/views/MenuView.java b/CheckersClient/core/src/com/mygdx/game/views/MenuView.java
index ed1fe94c0d30038f8f15639b7ae81f504f06d0ba..0c5c69b944c6607a93816f87fda6f2d510e920c8 100644
--- a/CheckersClient/core/src/com/mygdx/game/views/MenuView.java
+++ b/CheckersClient/core/src/com/mygdx/game/views/MenuView.java
@@ -5,8 +5,8 @@ import com.badlogic.gdx.assets.AssetManager;
 import com.badlogic.gdx.audio.Music;
 import com.badlogic.gdx.audio.Sound;
 import com.badlogic.gdx.graphics.Color;
-import com.badlogic.gdx.graphics.Pixmap;
 import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.TextureAtlas;
 import com.badlogic.gdx.graphics.g2d.TextureRegion;
 import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
 import com.badlogic.gdx.scenes.scene2d.Actor;
@@ -26,10 +26,10 @@ import com.mygdx.game.controllers.PlayerController;
 import com.mygdx.game.views.enums.CharacterAssets;
 import com.mygdx.game.views.enums.LobbyAssets;
 import com.mygdx.game.views.enums.MenuAssets;
-import com.mygdx.game.views.tokens.PlayerAvatar;
+import com.mygdx.game.views.tokens.AnimatedSprite;
 
 import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.HashMap;
 
 public class MenuView extends View{
 
@@ -60,11 +60,13 @@ public class MenuView extends View{
     private ImageButton nextAvatarButton;
     private ImageButton previousAvatarButton;
     private Image avatarPortraitImage;
+    private TextureAtlas portraitAtlas;
 
 
-    private ArrayList<PlayerAvatar> availableAvatars;
+    private ArrayList<AnimatedSprite> availableAvatars;
     int currentIndexAvatar = 0;
 
+    private HashMap<Integer, String> availableAvatarsHashMap;
 
     public MenuView(final GameViewManager gvm, final PlayerController playerController, AssetManager assetManager, final Stage stage, Skin skin) {
         super(gvm, playerController, assetManager, stage, skin);
@@ -74,6 +76,14 @@ public class MenuView extends View{
         }
         shapeRenderer = new ShapeRenderer(); // Used for draw debugging
 
+        availableAvatarsHashMap = new HashMap<>();
+        availableAvatarsHashMap.put(0, "RegularGuy");
+        availableAvatarsHashMap.put(1, "HipsterGirl");
+        availableAvatarsHashMap.put(2, "HighSchoolGuy");
+        availableAvatarsHashMap.put(3, "RocketGuy");
+        availableAvatarsHashMap.put(4, "AsianGirl");
+        availableAvatarsHashMap.put(5, "Grandma");
+
         this.backgroundImage = new Image ((Texture) assetManager.get(MenuAssets.BACKGROUND.path, MenuAssets.BACKGROUND.classType));
         backgroundImage.setPosition(Gdx.graphics.getWidth()/2-backgroundImage.getWidth()/2, 0);
         backgroundImage.setOrigin(0,0);
@@ -111,72 +121,25 @@ public class MenuView extends View{
         music.setVolume(1);
         music.setLooping(true);
         music.play();
-        availableAvatars = new ArrayList<>();
-
-        // SPRITES
-        Texture anim_tex_1 = assetManager.get(CharacterAssets.ASIAN_GIRL_ANIM_FRAME1.path, Texture.class);
-        Texture anim_tex_2 = assetManager.get(CharacterAssets.ASIAN_GIRL_ANIM_FRAME2.path, Texture.class);
-        Texture anim_tex_3 = assetManager.get(CharacterAssets.ASIAN_GIRL_ANIM_FRAME3.path, Texture.class);
-        Texture portrait = assetManager.get(CharacterAssets.ASIAN_GIRL_PORTRAIT.path, Texture.class);
-        ArrayList<Texture> anim_tex_arr = new ArrayList<>(Arrays.asList(anim_tex_1, anim_tex_2, anim_tex_3));
-        PlayerAvatar asianGirlAvatar = new PlayerAvatar(anim_tex_arr, portrait, "Small Girl");
-        availableAvatars.add(asianGirlAvatar);
-
-        anim_tex_1 = assetManager.get(CharacterAssets.GRANDMA_ANIM_FRAME1.path, Texture.class);
-        anim_tex_2 = assetManager.get(CharacterAssets.GRANDMA_ANIM_FRAME2.path, Texture.class);
-        anim_tex_3 = assetManager.get(CharacterAssets.GRANDMA_ANIM_FRAME3.path, Texture.class);
-        portrait = assetManager.get(CharacterAssets.GRANDMA_PORTRAIT.path, Texture.class);
-        anim_tex_arr = new ArrayList<>(Arrays.asList(anim_tex_1, anim_tex_2, anim_tex_3));
-        PlayerAvatar grandmaAvatar = new PlayerAvatar(anim_tex_arr, portrait, "Grandma");
-        availableAvatars.add(grandmaAvatar);
-
-        anim_tex_1 = assetManager.get(CharacterAssets.HIGH_SCHOOL_GUY_ANIM_FRAME1.path, Texture.class);
-        anim_tex_2 = assetManager.get(CharacterAssets.HIGH_SCHOOL_GUY_ANIM_FRAME2.path, Texture.class);
-        anim_tex_3 = assetManager.get(CharacterAssets.HIGH_SCHOOL_GUY_ANIM_FRAME3.path, Texture.class);
-        portrait = assetManager.get(CharacterAssets.HIGH_SCHOOL_GUY_PORTRAIT.path, Texture.class);
-        anim_tex_arr = new ArrayList<>(Arrays.asList(anim_tex_1, anim_tex_2, anim_tex_3));
-        PlayerAvatar highSchoolGuy = new PlayerAvatar(anim_tex_arr, portrait, "High School Guy");
-        availableAvatars.add(highSchoolGuy);
-
-        anim_tex_1 = assetManager.get(CharacterAssets.HIPSTER_GIRL_ANIM_FRAME1.path, Texture.class);
-        anim_tex_2 = assetManager.get(CharacterAssets.HIPSTER_GIRL_ANIM_FRAME2.path, Texture.class);
-        anim_tex_3 = assetManager.get(CharacterAssets.HIPSTER_GIRL_ANIM_FRAME3.path, Texture.class);
-        portrait = assetManager.get(CharacterAssets.HIPSTER_GIRL_PORTRAIT.path, Texture.class);
-        anim_tex_arr = new ArrayList<>(Arrays.asList(anim_tex_1, anim_tex_2, anim_tex_3));
-        PlayerAvatar hipsterGirl = new PlayerAvatar(anim_tex_arr, portrait, "Fashion Girl");
-        availableAvatars.add(hipsterGirl);
-
-        anim_tex_1 = assetManager.get(CharacterAssets.REGULAR_GUY_ANIM_FRAME1.path, Texture.class);
-        anim_tex_2 = assetManager.get(CharacterAssets.REGULAR_GUY_ANIM_FRAME2.path, Texture.class);
-        anim_tex_3 = assetManager.get(CharacterAssets.REGULAR_GUY_ANIM_FRAME3.path, Texture.class);
-        portrait = assetManager.get(CharacterAssets.REGULAR_GUY_PORTRAIT.path, Texture.class);
-        anim_tex_arr = new ArrayList<>(Arrays.asList(anim_tex_1, anim_tex_2, anim_tex_3));
-        PlayerAvatar regularGuy = new PlayerAvatar(anim_tex_arr, portrait, "Regular Guy");
-        availableAvatars.add(regularGuy);
-
-        anim_tex_1 = assetManager.get(CharacterAssets.ROCKET_GUY_ANIM_FRAME1.path, Texture.class);
-        anim_tex_2 = assetManager.get(CharacterAssets.ROCKET_GUY_ANIM_FRAME2.path, Texture.class);
-        anim_tex_3 = assetManager.get(CharacterAssets.ROCKET_GUY_ANIM_FRAME3.path, Texture.class);
-        portrait = assetManager.get(CharacterAssets.ROCKET_GUY_PORTRAIT.path, Texture.class);
-        anim_tex_arr = new ArrayList<>(Arrays.asList(anim_tex_1, anim_tex_2, anim_tex_3));
-        PlayerAvatar rocketGuy = new PlayerAvatar(anim_tex_arr, portrait, "Rocket Guy");
-        availableAvatars.add(rocketGuy);
 
         Drawable drawable = new TextureRegionDrawable(new TextureRegion(assetManager.get(MenuAssets.NEXT_AVATAR_BUTTON.path, Texture.class)));
         nextAvatarButton = new ImageButton(drawable);
 
-        TextureRegion texReg = new TextureRegion(assetManager.get(MenuAssets.NEXT_AVATAR_BUTTON.path, Texture.class));
-        texReg.flip(true,false);
-        Drawable flippedDrawable = new TextureRegionDrawable(texReg);
-        previousAvatarButton = new ImageButton(flippedDrawable);
+        TextureRegion previousAvatarButton = new TextureRegion(assetManager.get(MenuAssets.NEXT_AVATAR_BUTTON.path, Texture.class));
+        previousAvatarButton.flip(true,false);
+        Drawable flippedDrawable = new TextureRegionDrawable(previousAvatarButton);
+        this.previousAvatarButton = new ImageButton(flippedDrawable);
+        this.portraitAtlas = (TextureAtlas) assetManager.get(CharacterAssets.PortraitsAtlas.path, CharacterAssets.PortraitsAtlas.classType);
 
-        Drawable portraitDrawable = new TextureRegionDrawable(new TextureRegion(availableAvatars.get(currentIndexAvatar).getPortrait()));
-        avatarPortraitImage = new Image(portraitDrawable);
-        avatarPortraitImage.setBounds(0, 0, col_width*1.8f, col_width*1.8f);
+        TextureRegion texReggy = (TextureRegion) portraitAtlas.findRegion(availableAvatarsHashMap.get(currentIndexAvatar)+"Portrait");
+        System.out.println("Finding avatar with index:  " + currentIndexAvatar);
+        System.out.println("Name is:  " + availableAvatarsHashMap.get(currentIndexAvatar));
+        avatarPortraitImage = new Image(texReggy);
+        avatarPortraitImage.setBounds(0,0,265,265);
+        avatarPortraitImage.setPosition(formImage.getX()+formImage.getWidth()/2-avatarPortraitImage.getScaleX()*avatarPortraitImage.getWidth()/2, formButton.getY()+formButton.getHeight()+40);
 
-        avatarPortraitImage.setPosition(formImage.getX()+formImage.getWidth()/2-avatarPortraitImage.getWidth()/2, formImage.getY()+row_height*2);
         nextAvatarButton.setPosition(avatarPortraitImage.getX()+ avatarPortraitImage.getWidth()+col_width*0.8f-nextAvatarButton.getWidth(), avatarPortraitImage.getY()+ avatarPortraitImage.getHeight()/2-nextAvatarButton.getHeight()/2);
-        previousAvatarButton.setPosition(avatarPortraitImage.getX()-col_width*0.8f, avatarPortraitImage.getY()+ avatarPortraitImage.getHeight()/2-previousAvatarButton.getHeight()/2);
+        this.previousAvatarButton.setPosition(avatarPortraitImage.getX()-col_width*0.8f, avatarPortraitImage.getY()+ avatarPortraitImage.getHeight()/2- this.previousAvatarButton.getHeight()/2);
 
 
         connectionBarImage = new Image(assetManager.get(MenuAssets.CONNECTION_BAR.path, Texture.class));
@@ -187,14 +150,14 @@ public class MenuView extends View{
         connectionBarRedCircle.setPosition(connectionBarImage.getX()+connectionBarImage.getWidth()*0.75f, connectionBarImage.getY()+connectionBarImage.getHeight()/2-connectionBarRedCircle.getHeight()/2);
         connectionBarGreenCircle.setPosition(connectionBarImage.getX()+connectionBarImage.getWidth()*0.75f, connectionBarImage.getY()+connectionBarImage.getHeight()/2-connectionBarGreenCircle.getHeight()/2);
 
-        previousAvatarButton.addListener(new InputListener(){
+        this.previousAvatarButton.addListener(new InputListener(){
             @Override
             public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
                 buttonClickAudio.play(0.8f);
                 if(currentIndexAvatar >0){
                     currentIndexAvatar -= 1;
+                    updateAvatarPortrait();
                 }
-                updateAvatarPortrait();
                 return true;
             }
 
@@ -204,11 +167,10 @@ public class MenuView extends View{
             @Override
             public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
                 buttonClickAudio.play(0.8f);
-                if(currentIndexAvatar <availableAvatars.size()-1){
+                if(availableAvatarsHashMap.size()-1 > currentIndexAvatar){
                     currentIndexAvatar += 1;
+                    updateAvatarPortrait();
                 }
-                updateAvatarPortrait();
-                outputLabel.setText("NEXT AVATAR: current avatar is: " + availableAvatars.get(currentIndexAvatar).getName());
                 return true;
             }
         });
@@ -254,7 +216,7 @@ public class MenuView extends View{
         stage.addActor(usernameTextField);
         stage.addActor(formButton);
         stage.addActor(nextAvatarButton);
-        stage.addActor(previousAvatarButton);
+        stage.addActor(this.previousAvatarButton);
         stage.addActor(avatarPortraitImage);
         stage.addActor(logoImage);
     }
@@ -265,8 +227,11 @@ public class MenuView extends View{
     }
 
     private void updateAvatarPortrait(){
-        Drawable portraitDrawable = new TextureRegionDrawable(new TextureRegion(availableAvatars.get(currentIndexAvatar).getPortrait()));
-        avatarPortraitImage.setDrawable(portraitDrawable);
+        System.out.println("Finding avatar with index:  " + currentIndexAvatar);
+        System.out.println("Name is:  " + availableAvatarsHashMap.get(currentIndexAvatar) + "Portrait");
+       avatarPortraitImage.setDrawable(new TextureRegionDrawable(
+               (TextureRegion) portraitAtlas.findRegion(availableAvatarsHashMap.get(currentIndexAvatar)+"Portrait")
+       ));
     }
 
 
@@ -316,7 +281,7 @@ public class MenuView extends View{
         if(fadeOutAlpha >= 1){
             stage.clear();
             startFadeout = false;
-            gvm.push(new LobbyView(gvm, playerController, assetManager, stage, skin, availableAvatars));
+            gvm.push(new LobbyView(gvm, playerController, assetManager, stage, skin, availableAvatarsHashMap, music));
         }
     }
 
diff --git a/CheckersClient/core/src/com/mygdx/game/views/PlayView.java b/CheckersClient/core/src/com/mygdx/game/views/PlayView.java
index a4aec1898000389f6558a568a86f3a9c9b7cb507..6a4fca9fb53872a57bce84b9e45ada1043b5098f 100644
--- a/CheckersClient/core/src/com/mygdx/game/views/PlayView.java
+++ b/CheckersClient/core/src/com/mygdx/game/views/PlayView.java
@@ -1,20 +1,15 @@
 package com.mygdx.game.views;
 
 import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.Input;
 import com.badlogic.gdx.assets.AssetManager;
-import com.badlogic.gdx.audio.Sound;
 import com.badlogic.gdx.graphics.Color;
 import com.badlogic.gdx.graphics.Texture;
-import com.badlogic.gdx.graphics.g2d.BitmapFont;
-import com.badlogic.gdx.graphics.g2d.Sprite;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
 import com.badlogic.gdx.scenes.scene2d.Stage;
 import com.badlogic.gdx.scenes.scene2d.ui.Skin;
 import com.mygdx.game.controllers.PlayerController;
-import com.mygdx.game.views.enums.MenuAssets;
 import com.mygdx.game.views.enums.PlayAssets;
-import com.mygdx.game.views.tokens.PlayerAvatar;
+import com.mygdx.game.views.tokens.AnimatedSprite;
 import com.mygdx.game.views.tokens.StarPiece;
 
 import java.util.ArrayList;
@@ -23,21 +18,25 @@ import java.util.ArrayList;
 public class PlayView extends View{
 
     private Texture background;
+    StarPiece piece;
+    Texture starPieceBase;
+    Texture starPieceBaseBorder;
+    Texture starPieceMast;
+    Texture starPieceMastBorder;
+    Texture starPieceHead;
+    Texture starPieceHeadBorder;
 
-    public PlayView(GameViewManager gvm, PlayerController playerController, AssetManager assetManager, Stage stage, Skin skin, ArrayList<PlayerAvatar> availableAvatars) {
-        super(gvm, playerController, assetManager, stage, skin);
-        background = new Texture ("Game/GameBoard/1x/GameBoard@1x.png");
-
-    }
-
-    public PlayView(GameViewManager gvm, PlayerController playerController, AssetManager assetManager, Stage stage, Skin skin) {
+    public PlayView(GameViewManager gvm, PlayerController playerController, AssetManager assetManager, Stage stage, Skin skin, ArrayList<AnimatedSprite> lobbyAvatars) {
         super(gvm, playerController, assetManager, stage, skin);
+        background = new Texture ("Game/1x/GameBoard@1x.png");
 
         for(PlayAssets asset : PlayAssets.values()) {
             assetManager.load(asset.path, asset.classType);
         }
         assetManager.finishLoading();
 
+        setFadeColor(Color.BLACK);
+
         starPieceBase = (Texture) assetManager.get(PlayAssets.STAR_PIECE_BASE.path, PlayAssets.STAR_PIECE_BASE.classType);
         starPieceBaseBorder = (Texture) assetManager.get(PlayAssets.STAR_PIECE_BASE_BORDER.path, PlayAssets.STAR_PIECE_BASE_BORDER.classType);
         starPieceMast = (Texture) assetManager.get(PlayAssets.STAR_PIECE_MAST.path, PlayAssets.STAR_PIECE_MAST.classType);
@@ -45,18 +44,9 @@ public class PlayView extends View{
         starPieceHead = (Texture) assetManager.get(PlayAssets.STAR_PIECE_HEAD.path, PlayAssets.STAR_PIECE_HEAD.classType);
         starPieceHeadBorder = (Texture) assetManager.get(PlayAssets.STAR_PIECE_HEAD_BORDER.path, PlayAssets.STAR_PIECE_HEAD_BORDER.classType);
 
-        piece = new StarPiece(0 , 0, Color.RED, starPieceBase, starPieceBaseBorder, starPieceMast, starPieceMastBorder, starPieceHead, starPieceHeadBorder);
-        piece.setRotateHead(true);
-
+        this.piece = new StarPiece(0 , 0, Color.RED, starPieceBase, starPieceBaseBorder, starPieceMast, starPieceMastBorder, starPieceHead, starPieceHeadBorder);
+        this.piece.setRotateHead(true);
     }
-    StarPiece piece;
-    Texture starPieceBase;
-    Texture starPieceBaseBorder;
-    Texture starPieceMast;
-    Texture starPieceMastBorder;
-    Texture starPieceHead;
-    Texture starPieceHeadBorder;
-
 
     private void isGameOver(){
         boolean someCondition = false;
@@ -79,24 +69,45 @@ public class PlayView extends View{
     @Override
     public void render(float dt) {
 
-        stage.draw();
-
+        stage.getBatch().begin();
+        stage.getBatch().draw(background, 0, 0);
+        stage.getBatch().end();
 
+        stage.draw();
         piece.draw(stage.getBatch());
-        piece.setPosition(Gdx.input.getX(), Gdx.input.getY());
-
-
 
     }
 
     @Override
     public void fadeIn(float dt) {
-
+        stage.getBatch().begin();
+        Color c = stage.getBatch().getColor();
+        stage.getBatch().setColor(c.r, c.g, c.b, fadeOutAlpha);
+        fadeInAlpha -= dt/fadeInLength;
+        stage.getBatch().draw(fadeOverlayTexture, 0, 0, col_width*Help_Guides, row_height*Help_Guides);
+        stage.getBatch().setColor(c);
+        stage.getBatch().end();
+
+        if(fadeInAlpha <= 0){
+            startFadeIn = false;
+        }
     }
 
     @Override
     public void fadeOut(float dt) {
-
+        stage.getBatch().begin();
+        Color c = stage.getBatch().getColor();
+        stage.getBatch().setColor(c.r, c.g, c.b, fadeOutAlpha);
+        fadeOutAlpha += dt/fadeOutLength;
+        stage.getBatch().draw(fadeOverlayTexture, 0, 0, col_width*Help_Guides, row_height*Help_Guides);
+        stage.getBatch().setColor(c);
+        stage.getBatch().end();
+        if(fadeOutAlpha >= 1){
+            stage.clear();
+            startFadeout = false;
+
+            //gvm.set(new CinematicView(gvm, playerController, assetManager, stage, skin, lobbyAvatars));
+        }
     }
 
     private void debugDraw(SpriteBatch sb, String text, int xPos, int yPos){
diff --git a/CheckersClient/core/src/com/mygdx/game/views/enums/CharacterAssets.java b/CheckersClient/core/src/com/mygdx/game/views/enums/CharacterAssets.java
index a74887a922a1347499eab794f4053267a64bca37..c77661dbc6838fc15a8573c98c30685841f0ccbd 100644
--- a/CheckersClient/core/src/com/mygdx/game/views/enums/CharacterAssets.java
+++ b/CheckersClient/core/src/com/mygdx/game/views/enums/CharacterAssets.java
@@ -1,38 +1,17 @@
 package com.mygdx.game.views.enums;
 
 import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.TextureAtlas;
 
 public enum CharacterAssets {
 
-    ASIAN_GIRL_ANIM_FRAME1("characters/AsianGirl1@1x.png", Texture.class),
-    ASIAN_GIRL_ANIM_FRAME2("characters/AsianGirl2@1x.png", Texture.class),
-    ASIAN_GIRL_ANIM_FRAME3("characters/AsianGirl3@1x.png", Texture.class),
-    ASIAN_GIRL_PORTRAIT("characters/AsianGirlPortrait@1x.png", Texture.class),
-
-    GRANDMA_ANIM_FRAME1("characters/Grandma1@1x.png", Texture.class),
-    GRANDMA_ANIM_FRAME2("characters/Grandma2@1x.png", Texture.class),
-    GRANDMA_ANIM_FRAME3("characters/Grandma3@1x.png", Texture.class),
-    GRANDMA_PORTRAIT("characters/GrandmaPortrait@1x.png", Texture.class),
-
-    HIGH_SCHOOL_GUY_ANIM_FRAME1("characters/HighSchoolGuy1@1x.png", Texture.class),
-    HIGH_SCHOOL_GUY_ANIM_FRAME2("characters/HighSchoolGuy2@1x.png", Texture.class),
-    HIGH_SCHOOL_GUY_ANIM_FRAME3("characters/HighSchoolGuy3@1x.png", Texture.class),
-    HIGH_SCHOOL_GUY_PORTRAIT("characters/HighSchoolGuyPortrait@1x.png", Texture.class),
-
-    HIPSTER_GIRL_ANIM_FRAME1("characters/HipsterGirl1@1x.png", Texture.class),
-    HIPSTER_GIRL_ANIM_FRAME2("characters/HipsterGirl2@1x.png", Texture.class),
-    HIPSTER_GIRL_ANIM_FRAME3("characters/HipsterGirl3@1x.png", Texture.class),
-    HIPSTER_GIRL_PORTRAIT("characters/HipsterGirlPortrait@1x.png", Texture.class),
-
-    REGULAR_GUY_ANIM_FRAME1("characters/RegularGuy1@1x.png", Texture.class),
-    REGULAR_GUY_ANIM_FRAME2("characters/RegularGuy2@1x.png", Texture.class),
-    REGULAR_GUY_ANIM_FRAME3("characters/RegularGuy3@1x.png", Texture.class),
-    REGULAR_GUY_PORTRAIT("characters/RegularGuyPortrait@1x.png", Texture.class),
-
-    ROCKET_GUY_ANIM_FRAME1("characters/RocketGuy1@1x.png", Texture.class),
-    ROCKET_GUY_ANIM_FRAME2("characters/RocketGuy2@1x.png", Texture.class),
-    ROCKET_GUY_ANIM_FRAME3("characters/RocketGuy3@1x.png", Texture.class),
-    ROCKET_GUY_PORTRAIT("characters/RocketGuyPortrait@1x.png", Texture.class);
+    AsianGirlAtlas("characters/atlases/AsianGirl.atlas", TextureAtlas.class),
+    GrandmaAtlas("characters/atlases/Grandma.atlas", TextureAtlas.class),
+    HighSchoolGuyAtlas("characters/atlases/HighSchoolGuy.atlas", TextureAtlas.class),
+    HipsterGirlAtlas("characters/atlases/HipsterGirl.atlas", TextureAtlas.class),
+    RegularGuyAtlas("characters/atlases/RegularGuy.atlas", TextureAtlas.class),
+    RocketGuyAtlas("characters/atlases/RocketGuy.atlas", TextureAtlas.class),
+    PortraitsAtlas("characters/atlases/Portraits.atlas", TextureAtlas.class);
 
     public final String path;
     public final Class classType;
diff --git a/CheckersClient/core/src/com/mygdx/game/views/enums/CinematicAssets.java b/CheckersClient/core/src/com/mygdx/game/views/enums/CinematicAssets.java
new file mode 100644
index 0000000000000000000000000000000000000000..77ac1e41ed59c63fdf6c8965841916b2b9dd653e
--- /dev/null
+++ b/CheckersClient/core/src/com/mygdx/game/views/enums/CinematicAssets.java
@@ -0,0 +1,19 @@
+package com.mygdx.game.views.enums;
+
+import com.badlogic.gdx.audio.Music;
+import com.badlogic.gdx.graphics.g2d.TextureAtlas;
+
+public enum CinematicAssets {
+
+    CINEMATIC_AUDIO("cinematic/CinematicMusic.mp3", Music.class),
+    COUNT_DOWN_ATLAS("cinematic/atlas/CountDown.atlas", TextureAtlas.class),
+    CLOUD_ATLAS("cinematic/atlas/Cloud.atlas", TextureAtlas.class);
+
+    public final String path;
+    public final Class classType;
+
+    CinematicAssets(String assetPath, Class classType) {
+        this.path = assetPath;
+        this.classType = classType;
+    }
+}
\ No newline at end of file
diff --git a/CheckersClient/core/src/com/mygdx/game/views/enums/LobbyAssets.java b/CheckersClient/core/src/com/mygdx/game/views/enums/LobbyAssets.java
index 950d9af43fda3868e6295707bce0fe89074362b4..4b27859d170fa984718572be93a6004e1ed7bf45 100644
--- a/CheckersClient/core/src/com/mygdx/game/views/enums/LobbyAssets.java
+++ b/CheckersClient/core/src/com/mygdx/game/views/enums/LobbyAssets.java
@@ -1,24 +1,26 @@
 package com.mygdx.game.views.enums;
 
 import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.TextureArray;
+import com.badlogic.gdx.graphics.g2d.TextureAtlas;
 
 public enum LobbyAssets {
 
     LOBBY_LIST("Menu/1x/LobbyList.png", Texture.class),
     BACKGROUND("Menu/1x/LobbyMenu@1x.png", Texture.class),
     LOBBY("Menu/1x/Lobby.png", Texture.class),
-    MR_SERVER_ANIM1("characters/MrServer1@1x.png", Texture.class),
-    MR_SERVER_ANIM2("characters/MrServer2@1x.png", Texture.class),
-    MR_SERVER_ANIM3("characters/MrServer3@1x.png", Texture.class),
-    MR_SERVER_PORTRAIT("characters/MrServerPortrait@1x.png", Texture.class),
+    MR_SERVER_ATLAS("characters/atlases/MrServer.atlas", TextureAtlas.class),
     MR_SERVER_NAME("characters/MrServerName.png", Texture.class),
     MR_SERVER_BUBBLE_SQUARE("Menu/1x/MrServerBubbleSquare.png", Texture.class),
     MR_SERVER_BUBBLE_POINTER("Menu/1x/MrServerBubblePointer.png", Texture.class),
-    ROCKET("Menu/1x/Rocket_Main@1x.png", Texture.class),
+
+    ROCKET_BIG("Menu/1x/Rocket_Main@1x.png", Texture.class),
+    ROCKET_SMALL("Menu/1x/Rocket_Small@1x.png", Texture.class),
     ROCKET_EXHAUST("Menu/1x/Rocket_Exhaust@1x.png", Texture.class),
     PLAYER_READY_CHECK("Menu/1x/PlayerReadyCheck.png", Texture.class),
     PLAYER_READY("Menu/1x/PlayerReady.png", Texture.class);
 
+
     public final String path;
     public final Class classType;
 
diff --git a/CheckersClient/core/src/com/mygdx/game/views/enums/MenuAssets.java b/CheckersClient/core/src/com/mygdx/game/views/enums/MenuAssets.java
index b79d542d1923f1744e840df10ef23516aaf7a8de..b461218431ef6f34418a71894fb57be9fd464dae 100644
--- a/CheckersClient/core/src/com/mygdx/game/views/enums/MenuAssets.java
+++ b/CheckersClient/core/src/com/mygdx/game/views/enums/MenuAssets.java
@@ -1,9 +1,7 @@
 package com.mygdx.game.views.enums;
 
-import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.audio.Sound;
 import com.badlogic.gdx.graphics.Texture;
-import com.badlogic.gdx.graphics.g2d.BitmapFont;
 
 public enum MenuAssets {
     FORM_BUTTON("Menu/1x/FormButton.png", Texture.class),
diff --git a/CheckersClient/core/src/com/mygdx/game/views/tokens/AnimatedSprite.java b/CheckersClient/core/src/com/mygdx/game/views/tokens/AnimatedSprite.java
new file mode 100644
index 0000000000000000000000000000000000000000..f3ff1823cb2a1ebabe45457a9c3340325f37574d
--- /dev/null
+++ b/CheckersClient/core/src/com/mygdx/game/views/tokens/AnimatedSprite.java
@@ -0,0 +1,54 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by Fernflower decompiler)
+//
+
+package com.mygdx.game.views.tokens;
+
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.Sprite;
+import com.badlogic.gdx.graphics.g2d.TextureAtlas;
+import com.badlogic.gdx.graphics.g2d.TextureRegion;
+
+public class AnimatedSprite extends Sprite {
+
+    private final TextureRegion portrait;
+    private final String name;
+    private final TextureAtlas textureAtlas;
+    private int currentFrame = 1;
+    private final int maxFrame;
+    private boolean reversed = false;
+
+
+    public AnimatedSprite(TextureAtlas textureAtlas, TextureRegion portrait, String name, int maxFrame) {
+        super(textureAtlas.findRegion(name+1));
+        this.portrait = portrait;
+        this.name = name;
+        this.maxFrame = maxFrame;
+        this.textureAtlas = textureAtlas;
+    }
+
+    public void updateTexture() {
+        if (reversed) {
+            --currentFrame;
+            if (currentFrame == 1) {
+                reversed = false;
+            }
+        } else {
+            ++currentFrame;
+            if (currentFrame == maxFrame) {
+                reversed = true;
+            }
+        }
+        setRegion(textureAtlas.findRegion(name+currentFrame));
+    }
+
+
+    public TextureRegion getPortrait() {
+        return this.portrait;
+    }
+
+    public String getName() {
+        return this.name;
+    }
+}
diff --git a/CheckersClient/core/src/com/mygdx/game/views/tokens/PlayerAvatar.java b/CheckersClient/core/src/com/mygdx/game/views/tokens/PlayerAvatar.java
deleted file mode 100644
index 9d3a3777e46d3bae5cf50bf061fec5fd610a789a..0000000000000000000000000000000000000000
--- a/CheckersClient/core/src/com/mygdx/game/views/tokens/PlayerAvatar.java
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by Fernflower decompiler)
-//
-
-package com.mygdx.game.views.tokens;
-
-import com.badlogic.gdx.graphics.Texture;
-import com.badlogic.gdx.graphics.g2d.Sprite;
-import java.util.ArrayList;
-
-public class PlayerAvatar extends Sprite {
-    private final ArrayList<Texture> textureArray;
-    private final Texture portrait;
-    private final String name;
-    private int currentTexture = 0;
-    private boolean reversed = false;
-
-    public PlayerAvatar(ArrayList<Texture> textureArray, Texture portrait, String name) {
-        super(textureArray.get(0));
-        this.textureArray = textureArray;
-        this.portrait = portrait;
-        this.name = name;
-        setTexture(textureArray.get(currentTexture));
-    }
-
-    public void updateTexture() {
-        if (this.reversed) {
-            --this.currentTexture;
-            if (this.currentTexture <= 0) {
-                this.reversed = false;
-            }
-        } else {
-            ++this.currentTexture;
-            if (this.currentTexture == this.textureArray.size() - 1) {
-                this.reversed = true;
-            }
-        }
-        //System.out.println("Updating texture. Current texture Int: " + currentTexture + "  numOfTextures: " + textureArray.size());
-        setTexture(textureArray.get(currentTexture));
-    }
-
-    public ArrayList<Texture> getTextures() {
-        return this.textureArray;
-    }
-
-    public Texture getPortrait() {
-        return this.portrait;
-    }
-
-    public String getName() {
-        return this.name;
-    }
-}
diff --git a/CheckersServer/core/src/com/mygdx/game/controller/commands/cLobbyLeave.java b/CheckersServer/core/src/com/mygdx/game/controller/commands/cLobbyLeave.java
index f8665622965d4e6a4606a3fe930f7cf786c62e55..d21ef48818cd6ce678666110eb275672ab18b77e 100644
--- a/CheckersServer/core/src/com/mygdx/game/controller/commands/cLobbyLeave.java
+++ b/CheckersServer/core/src/com/mygdx/game/controller/commands/cLobbyLeave.java
@@ -20,6 +20,7 @@ public class cLobbyLeave extends Command{
             Lobby lobby = net.getLobby(lobby_id);
             ArrayList<Connection> connections = net.getConnections(lobby);
             data = net.leaveLobby(connection.getID(),lobby_id);
+            net.getPlayer(connection.getID()).setIsPlayerReady(false);
             System.out.printf("Request from Player w. ID: %d to leave Lobby w. ID: %d. Returning Lobby w. ID: %d \n",
                     connection.getID(), lobby_id, ((Lobby)data).getID());
             for (Connection c : connections) {