diff --git a/CheckersClient/android/assets/Game/1x/StarBackground1x.png b/CheckersClient/android/assets/Game/1x/StarBackground1x.png
new file mode 100644
index 0000000000000000000000000000000000000000..d04e0209b56ad9721a0b618390633a484010f488
Binary files /dev/null and b/CheckersClient/android/assets/Game/1x/StarBackground1x.png differ
diff --git a/CheckersClient/core/src/com/mygdx/game/UniCheckersClient.java b/CheckersClient/core/src/com/mygdx/game/UniCheckersClient.java
index 8a5c602419b20f4ee47f55a42034e7a97985eae9..4327327228e8b2768ea17c0eebed59ec0bac8356 100644
--- a/CheckersClient/core/src/com/mygdx/game/UniCheckersClient.java
+++ b/CheckersClient/core/src/com/mygdx/game/UniCheckersClient.java
@@ -70,10 +70,10 @@ public class UniCheckersClient extends ApplicationAdapter {
 
 		//gvm.push(new LoadingView(gvm, playerController, assetManager, stage, skin));
 		//gvm.push(new CinematicView(gvm, playerController, assetManager, stage, skin));
+		// TODO: Remove the following four lines and use the above line instead
 		PlayView playView = new PlayView(gvm, playerController, assetManager, stage, skin, null);
 		gameController = new GameController(model, playView);
 		playView.setGameController(gameController);
-
 		gvm.push(playView);
 	}
 
diff --git a/CheckersClient/core/src/com/mygdx/game/controllers/GameController.java b/CheckersClient/core/src/com/mygdx/game/controllers/GameController.java
index 1af420c42189ed5e64a775d4ff2f791db10d019f..e2f34e6f34d7e0f329653f94d63f44aa49948042 100644
--- a/CheckersClient/core/src/com/mygdx/game/controllers/GameController.java
+++ b/CheckersClient/core/src/com/mygdx/game/controllers/GameController.java
@@ -2,7 +2,6 @@ package com.mygdx.game.controllers;
 
 import com.badlogic.gdx.math.Vector3;
 import com.mygdx.game.model.Game;
-import com.mygdx.game.views.Constants;
 import com.mygdx.game.views.PlayView;
 import com.mygdx.game.views.tokens.StarPiece;
 
@@ -24,7 +23,7 @@ public class GameController {
     }
 
     public void handleClick(float x, float y) {
-        Vector3 cubeCoordinates = UtilsKt.pixelToCube(x, y, Constants.HEX_SIDE_LENGTH);
+        Vector3 cubeCoordinates = UtilsKt.pixelToCube(x, y, this.view.hex_side_length);
 
         // If field exists at clicked coordinates
         if (this.model.fieldExists(cubeCoordinates)) {
diff --git a/CheckersClient/core/src/com/mygdx/game/model/Game.kt b/CheckersClient/core/src/com/mygdx/game/model/Game.kt
index 6731b6c3ce6b1f6260cb0c3d81c0d41eee531eb5..162a9806ee6410c330c7835fa6e34ae4fb7d9d72 100644
--- a/CheckersClient/core/src/com/mygdx/game/model/Game.kt
+++ b/CheckersClient/core/src/com/mygdx/game/model/Game.kt
@@ -22,7 +22,6 @@ class Game(gameState: GameState) {
     }
 
     fun fieldHasPiece(cubeCoordinates: Vector3): Boolean {
-        print(this.gameState.getBoardState()?.fields?.get(cubeCoordinates)?.hasPiece())
         return this.gameState.getBoardState()?.fields?.get(cubeCoordinates)?.hasPiece() == true
     }
 
diff --git a/CheckersClient/core/src/com/mygdx/game/views/CinematicView.java b/CheckersClient/core/src/com/mygdx/game/views/CinematicView.java
index 139aa54ba420c5b53f88bf02a61c23744044bbba..ed7ec4a6cab81af3ece3ace9a8046a789eb80100 100644
--- a/CheckersClient/core/src/com/mygdx/game/views/CinematicView.java
+++ b/CheckersClient/core/src/com/mygdx/game/views/CinematicView.java
@@ -12,7 +12,13 @@ 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.GameController;
 import com.mygdx.game.controllers.PlayerController;
+import com.mygdx.game.model.DefaultBoard;
+import com.mygdx.game.model.Game;
+import com.mygdx.game.model.GameMode;
+import com.mygdx.game.model.GameState;
+import com.mygdx.game.model.gamemodes.rules.DefaultRules;
 import com.mygdx.game.views.enums.CharacterAssets;
 import com.mygdx.game.views.enums.CinematicAssets;
 import com.mygdx.game.views.enums.LobbyAssets;
@@ -269,7 +275,13 @@ public class CinematicView extends View{
         if(fadeOutAlpha >= 1){
             stage.clear();
             startFadeout = false;
-            gvm.set(new PlayView(gvm, playerController, assetManager, stage, skin, lobbyAvatars));
+
+            Game model = new Game(new GameState(new GameMode(new DefaultRules(), new DefaultBoard())));
+            PlayView playView = new PlayView(gvm, playerController, assetManager, stage, skin, lobbyAvatars);
+            GameController gameController = new GameController(model, playView);
+            playView.setGameController(gameController);
+
+            gvm.set(playView);
         }
     }
 
diff --git a/CheckersClient/core/src/com/mygdx/game/views/Constants.java b/CheckersClient/core/src/com/mygdx/game/views/Constants.java
deleted file mode 100644
index 5892cff15385b10cec304dbb5dc52145c853124f..0000000000000000000000000000000000000000
--- a/CheckersClient/core/src/com/mygdx/game/views/Constants.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.mygdx.game.views;
-
-public class Constants {
-    public static final Float SCALE_FACTOR_BOARD = 0.19F;
-    public static final Float SCALE_FACTOR_PIECE = 0.035F;
-    public static final Float HEX_SIDE_LENGTH = 28F;
-}
diff --git a/CheckersClient/core/src/com/mygdx/game/views/PlayView.java b/CheckersClient/core/src/com/mygdx/game/views/PlayView.java
index d9964f7ecdde82ca54fe4ddae072a95478e6f5c6..99e173289b99501106aa81406a01e73049458b34 100644
--- a/CheckersClient/core/src/com/mygdx/game/views/PlayView.java
+++ b/CheckersClient/core/src/com/mygdx/game/views/PlayView.java
@@ -20,7 +20,6 @@ import com.mygdx.game.views.tokens.StarPiece;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 
 
@@ -30,7 +29,6 @@ public class PlayView extends View{
     int row_height = Gdx.graphics.getHeight() / Help_Guides;
     int col_width = Gdx.graphics.getWidth() / Help_Guides;
 
-    Float BOARD_SCALE_FACTOR = Constants.SCALE_FACTOR_BOARD;
     List<Color> PIECE_COLORS = Arrays.asList(Color.PINK, Color.CYAN, Color.LIME, Color.GOLD, Color.LIGHT_GRAY, Color.PURPLE);
 
     Texture starPieceBase;
@@ -43,19 +41,36 @@ public class PlayView extends View{
     HashMap<Vector3, StarPiece> pieces;
     GameController gameController;
 
+    float scale_factor_piece;
+    public float hex_side_length;
+
     public PlayView(GameViewManager gvm, PlayerController playerController, AssetManager assetManager, Stage stage, Skin skin, ArrayList<AnimatedSprite> lobbyAvatars) {
         super(gvm, playerController, assetManager, stage, skin);
 
-        // Create and downscale background image
-        Texture background = new Texture("Game/1x/GameBoard@1x.png");
+        // Create background image
+        Texture background = new Texture("Game/1x/StarBackground1x.png");
         Image backgroundImage = new Image(background);
-        backgroundImage.setScaleX(BOARD_SCALE_FACTOR);
-        backgroundImage.setScaleY(BOARD_SCALE_FACTOR);
-        //backgroundImage.setScaling(Scaling.fit);
+        backgroundImage.setScaling(Scaling.fill);
+        backgroundImage.setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
 
-        backgroundImage.setPosition(Gdx.graphics.getWidth() / 2F - backgroundImage.getWidth() * backgroundImage.getScaleX() / 2F, Gdx.graphics.getHeight() / 2F - backgroundImage.getHeight() * backgroundImage.getScaleY() / 2F);
         stage.addActor(backgroundImage);
 
+        // Create board image
+        Texture board = new Texture("Game/1x/GameBoard@1x.png");
+        Image boardImage = new Image(board);
+
+        // Calculate scale factors for board and pieces, and corresponding hex side length
+        float scale_factor_board = Gdx.graphics.getHeight() / boardImage.getHeight();
+        this.scale_factor_piece = scale_factor_board * 0.18421F;
+        this.hex_side_length = scale_factor_board / 0.00678F;
+
+        boardImage.setScaleX(scale_factor_board);
+        boardImage.setScaleY(scale_factor_board);
+
+        boardImage.setPosition(Gdx.graphics.getWidth() / 2F - boardImage.getWidth() * boardImage.getScaleX() / 2F, Gdx.graphics.getHeight() / 2F - board.getHeight() * boardImage.getScaleY() / 2F);
+        stage.addActor(boardImage);
+
+
         for (PlayAssets asset : PlayAssets.values()) {
             assetManager.load(asset.path, asset.classType);
         }
@@ -127,11 +142,11 @@ public class PlayView extends View{
                 float coordinateX = startFieldPixelCoordinates.get(i).get(j)[0];
                 float coordinateY = startFieldPixelCoordinates.get(i).get(j)[1];
 
-                coordinateX += Gdx.graphics.getWidth() / 2F - (starPieceBase.getWidth() * Constants.SCALE_FACTOR_PIECE) / 2F;
-                coordinateY = Gdx.graphics.getHeight() / 2F  - coordinateY - (starPieceBase.getHeight() * Constants.SCALE_FACTOR_PIECE) / 2F; // Adjusted for inverted y-axis
+                coordinateX += Gdx.graphics.getWidth() / 2F - (starPieceBase.getWidth() * scale_factor_piece) / 2F;
+                coordinateY = Gdx.graphics.getHeight() / 2F  - coordinateY - (starPieceBase.getHeight() * scale_factor_piece) / 2F; // Adjusted for inverted y-axis
 
                 color = PIECE_COLORS.get(colorCounter);
-                StarPiece piece = new StarPiece(coordinateX, coordinateY, color, starPieceBase, starPieceBaseBorder, starPieceMast, starPieceMastBorder, starPieceHead, starPieceHeadBorder);
+                StarPiece piece = new StarPiece(scale_factor_piece, coordinateX, coordinateY, color, starPieceBase, starPieceBaseBorder, starPieceMast, starPieceMastBorder, starPieceHead, starPieceHeadBorder);
                 this.pieces.put(startFieldCubeCoordinates.get(i).get(j), piece);
             }
             colorCounter++;
@@ -181,7 +196,7 @@ public class PlayView extends View{
             List<Float[]> coordinateSetPixel = new ArrayList<>();
 
             for (Vector3 coordinate : coordinateSet) {
-                coordinateSetPixel.add(UtilsKt.cubeToPixel(coordinate, Constants.HEX_SIDE_LENGTH));
+                coordinateSetPixel.add(UtilsKt.cubeToPixel(coordinate, hex_side_length));
             }
             startFieldCoordinatesPixel.add(coordinateSetPixel);
         }
@@ -189,10 +204,10 @@ public class PlayView extends View{
     }
 
     public void movePiece(StarPiece piece, Vector3 toCoordinates) {
-        Float[] pixelCoordinates = UtilsKt.cubeToPixel(toCoordinates, Constants.HEX_SIDE_LENGTH);
+        Float[] pixelCoordinates = UtilsKt.cubeToPixel(toCoordinates, hex_side_length);
 
-        piece.setX((Gdx.graphics.getWidth() / 2F) + pixelCoordinates[0] - ((starPieceBase.getWidth() * Constants.SCALE_FACTOR_PIECE) / 2F));
-        piece.setY(Gdx.graphics.getHeight() / 2F - pixelCoordinates[1] - ((starPieceBase.getHeight() * Constants.SCALE_FACTOR_PIECE) / 2F));
+        piece.setX((Gdx.graphics.getWidth() / 2F) + pixelCoordinates[0] - ((starPieceBase.getWidth() * scale_factor_piece) / 2F));
+        piece.setY(Gdx.graphics.getHeight() / 2F - pixelCoordinates[1] - ((starPieceBase.getHeight() * scale_factor_piece) / 2F));
 
         // Replace key
         pieces.values().remove(piece);
diff --git a/CheckersClient/core/src/com/mygdx/game/views/tokens/StarPiece.java b/CheckersClient/core/src/com/mygdx/game/views/tokens/StarPiece.java
index be3292d70394687399227638ef970f85f9f533d3..418ffd4204a607ad47c2208350baadfba628f431 100644
--- a/CheckersClient/core/src/com/mygdx/game/views/tokens/StarPiece.java
+++ b/CheckersClient/core/src/com/mygdx/game/views/tokens/StarPiece.java
@@ -3,8 +3,6 @@ package com.mygdx.game.views.tokens;
 import com.badlogic.gdx.graphics.Color;
 import com.badlogic.gdx.graphics.Texture;
 import com.badlogic.gdx.graphics.g2d.Batch;
-import com.badlogic.gdx.graphics.g2d.Sprite;
-import com.mygdx.game.views.Constants;
 
 public class StarPiece {
 
@@ -22,9 +20,9 @@ public class StarPiece {
     private boolean rotateHead;
     private float headRotation = 1;
 
-    Float SCALE_FACTOR;
+    Float scale_factor;
 
-    public StarPiece (float xPos, float yPos, Color color, Texture base, Texture baseBorder, Texture mast, Texture mastBorder, Texture head, Texture headBorder){
+    public StarPiece (float scale_factor, float xPos, float yPos, Color color, Texture base, Texture baseBorder, Texture mast, Texture mastBorder, Texture head, Texture headBorder){
 
         this.xPos = xPos;
         this.yPos = yPos;
@@ -38,32 +36,32 @@ public class StarPiece {
         this.headBorder = headBorder;
         this.rotateHead=false;
 
-        this.SCALE_FACTOR = Constants.SCALE_FACTOR_PIECE;
+        this.scale_factor = scale_factor;
     }
 
     public void draw(Batch sb){
         Color sbColor = sb.getColor();
         sb.begin();
         sb.setColor(color);
-        sb.draw(base, xPos, yPos, base.getWidth() * SCALE_FACTOR, base.getHeight() * SCALE_FACTOR);
+        sb.draw(base, xPos, yPos, base.getWidth() * scale_factor, base.getHeight() * scale_factor);
         sb.setColor(Color.BLACK);
-        sb.draw(baseBorder, xPos, yPos, baseBorder.getWidth() * SCALE_FACTOR, baseBorder.getHeight() * SCALE_FACTOR);
+        sb.draw(baseBorder, xPos, yPos, baseBorder.getWidth() * scale_factor, baseBorder.getHeight() * scale_factor);
 
         sb.setColor(color);
-        sb.draw(mast, xPos+ (base.getWidth() * SCALE_FACTOR)/2-(mast.getWidth() * SCALE_FACTOR)/2, yPos+(base.getHeight() * SCALE_FACTOR)*0.35f, mast.getWidth() * SCALE_FACTOR, mast.getHeight() * SCALE_FACTOR);
+        sb.draw(mast, xPos+ (base.getWidth() * scale_factor)/2-(mast.getWidth() * scale_factor)/2, yPos+(base.getHeight() * scale_factor)*0.35f, mast.getWidth() * scale_factor, mast.getHeight() * scale_factor);
         sb.setColor(Color.BLACK);
-        sb.draw(mastBorder, xPos+(base.getWidth() * SCALE_FACTOR)/2-(mast.getWidth()*SCALE_FACTOR)/2, yPos+(base.getHeight() * SCALE_FACTOR)*0.35f, mastBorder.getWidth() * SCALE_FACTOR, mastBorder.getHeight() * SCALE_FACTOR);
+        sb.draw(mastBorder, xPos+(base.getWidth() * scale_factor)/2-(mast.getWidth()*scale_factor)/2, yPos+(base.getHeight() * scale_factor)*0.35f, mastBorder.getWidth() * scale_factor, mastBorder.getHeight() * scale_factor);
 
         if(rotateHead){
             sb.setColor(color);
 
             sb.draw(head,
-             xPos+(base.getWidth() * SCALE_FACTOR)/2-(head.getWidth()*SCALE_FACTOR)/2,
-            yPos+(base.getHeight()*SCALE_FACTOR)-(head.getWidth()*SCALE_FACTOR)/2,
-            head.getWidth()*SCALE_FACTOR/2,
-            head.getHeight()*SCALE_FACTOR/2,
-            head.getWidth()*SCALE_FACTOR,
-            head.getHeight()*SCALE_FACTOR,
+             xPos+(base.getWidth() * scale_factor)/2-(head.getWidth()*scale_factor)/2,
+            yPos+(base.getHeight()*scale_factor)-(head.getWidth()*scale_factor)/2,
+            head.getWidth()*scale_factor/2,
+            head.getHeight()*scale_factor/2,
+            head.getWidth()*scale_factor,
+            head.getHeight()*scale_factor,
             1F,
             1F,
             headRotation++,
@@ -76,12 +74,12 @@ public class StarPiece {
 
             sb.setColor(Color.BLACK);
             sb.draw(headBorder,
-                    xPos+(base.getWidth()*SCALE_FACTOR)/2-(head.getWidth()*SCALE_FACTOR)/2,
-                    yPos+(base.getHeight()*SCALE_FACTOR)-(head.getWidth()*SCALE_FACTOR)/2,
-                    head.getWidth()*SCALE_FACTOR/2,
-                    head.getHeight()*SCALE_FACTOR/2,
-                    head.getWidth()*SCALE_FACTOR,
-                    head.getHeight()*SCALE_FACTOR,
+                    xPos+(base.getWidth()*scale_factor)/2-(head.getWidth()*scale_factor)/2,
+                    yPos+(base.getHeight()*scale_factor)-(head.getWidth()*scale_factor)/2,
+                    head.getWidth()*scale_factor/2,
+                    head.getHeight()*scale_factor/2,
+                    head.getWidth()*scale_factor,
+                    head.getHeight()*scale_factor,
                     1F,
                     1F,
                     headRotation++,
@@ -94,9 +92,9 @@ public class StarPiece {
         }
         else{
             sb.setColor(color);
-            sb.draw(head, xPos+(base.getWidth() * SCALE_FACTOR)/2-(head.getWidth() * SCALE_FACTOR)/2, yPos+(base.getHeight() * SCALE_FACTOR)-(head.getWidth() * SCALE_FACTOR)/2, head.getWidth() * SCALE_FACTOR, head.getHeight() * SCALE_FACTOR);
+            sb.draw(head, xPos+(base.getWidth() * scale_factor)/2-(head.getWidth() * scale_factor)/2, yPos+(base.getHeight() * scale_factor)-(head.getWidth() * scale_factor)/2, head.getWidth() * scale_factor, head.getHeight() * scale_factor);
             sb.setColor(Color.BLACK);
-            sb.draw(headBorder, xPos+(base.getWidth() * SCALE_FACTOR)/2-(head.getWidth() * SCALE_FACTOR)/2, yPos+(base.getHeight() * SCALE_FACTOR)-(head.getWidth() * SCALE_FACTOR)/2, headBorder.getWidth() * SCALE_FACTOR, headBorder.getHeight() * SCALE_FACTOR);
+            sb.draw(headBorder, xPos+(base.getWidth() * scale_factor)/2-(head.getWidth() * scale_factor)/2, yPos+(base.getHeight() * scale_factor)-(head.getWidth() * scale_factor)/2, headBorder.getWidth() * scale_factor, headBorder.getHeight() * scale_factor);
         }
 
         sb.setColor(sbColor);
@@ -123,9 +121,9 @@ public class StarPiece {
         return yPos;
     }
 
-    public float getWidth() { return base.getWidth() * SCALE_FACTOR;}
+    public float getWidth() { return base.getWidth() * scale_factor;}
 
-    public float getHeight() { return base.getHeight() * SCALE_FACTOR;}
+    public float getHeight() { return base.getHeight() * scale_factor;}
 
     public void setPosition(float xPos, float yPos){
         this.xPos = xPos;