User prompt
Please fix the bug: 'tween is not defined' in or related to this line: 'tween.to(self, {' Line Number: 31 ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Add stars to top of screen
User prompt
Make stars flicker
User prompt
Make stars sparkle
User prompt
I can't see the stars
User prompt
Move stars to top of scene
User prompt
Make sure stars are in front of backdrop
User prompt
Increase star size
User prompt
Reduce story size so it is visible in scene
User prompt
Make the stars sparkle in the sky
User prompt
Make images high definition
User prompt
Make image hd
User prompt
Change text font to new time Roman
User prompt
Make text bold
User prompt
Make text black
User prompt
Move narrative text down 50
User prompt
Add narrative text to first scene using story asset as a backdrop
User prompt
Make graphics high definition
User prompt
Move story to bottom of scene
User prompt
Add story to first scene
User prompt
Add first scene to game
User prompt
Delete all code
Code edit (1 edits merged)
Please save this source code
User prompt
A Journey through Time
Initial prompt
Create a detailed concept and storyline for a musical adventure game titled "A Journey through Time." The game should combine engaging narrative elements with musical gameplay mechanics that enhance the player's experience as they explore different historical eras. Include the setting, main characters, key plot points, and how music integrates into gameplay, such as puzzles, battles, or exploration. Consider a progression system tied to musical achievements and how time travel influences both story and gameplay elements. # Steps 1. Define the historical time periods featured in the game and the reason the player travels through them. 2. Develop the protagonist and any key supporting characters, outlining their motivations and backgrounds. 3. Outline the main plot or quest that drives the adventure. 4. Describe how music is used in gameplay: for example, solving puzzles by playing melodies, rhythm-based challenges, or unlocking new areas by mastering musical themes. 5. Explain the progression and reward system tied to musical performance or discovery. 6. Illustrate how time travel alters game environments and impacts the story. # Output Format Present the concept in a structured format with sections for: - Title - Setting and Historical Periods - Characters - Plot Summary - Gameplay Mechanics (musical integration) - Progression and Rewards - Unique Features Related to Time Travel and Music Use clear, concise, and engaging language suitable for a game design pitch. # Examples Title: "A Journey through Time" Setting and Historical Periods: Ancient Egypt, Medieval Europe, and Futuristic Space Colonies. Characters: Protagonist is a young musician named Lyra who discovers a magical instrument enabling time travel. Supporting characters include historical figures and a mysterious antagonist seeking to alter history. Plot Summary: Lyra must collect lost musical relics across eras to restore the timeline and prevent chaos. Gameplay Mechanics: Players solve rhythm puzzles to unlock doors, participate in musical battles to defeat enemies, and compose tunes to influence characters and environments. Progression and Rewards: Unlock new instruments, abilities, and musical styles tied to each era as players advance. Unique Features: The soundtrack dynamically changes based on the era and player choices, affecting story outcomes.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Anomaly (enemy) var Anomaly = Container.expand(function () { var self = Container.call(this); var anomalySprite = self.attachAsset('anomaly', { anchorX: 0.5, anchorY: 0.5 }); self.hp = 3; self.flash = function () { tween(anomalySprite, { tint: 0xffffff }, { duration: 120, onFinish: function onFinish() { tween(anomalySprite, { tint: 0xff4444 }, { duration: 120 }); } }); }; return self; }); // Lyra (the player) var Lyra = Container.expand(function () { var self = Container.call(this); var lyraSprite = self.attachAsset('lyra', { anchorX: 0.5, anchorY: 0.5 }); // Instrument is always attached to Lyra var instrument = self.attachAsset('instrument', { anchorX: 0.5, anchorY: 0.5, x: 0, y: 100 }); // For future: instrument can animate or glow self.instrument = instrument; // For drag self.down = function (x, y, obj) {}; self.up = function (x, y, obj) {}; return self; }); // Note (for rhythm puzzles) var Note = Container.expand(function () { var self = Container.call(this); var noteSprite = self.attachAsset('note', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 12; // pixels per tick self.targetY = 0; self.hit = false; self.update = function () { if (self.y < self.targetY) { self.y += self.speed; if (self.y > self.targetY) self.y = self.targetY; } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x181818 }); /**** * Game Code ****/ // Music for each era // Sound for anomaly defeat // Sound for wrong note // Sound for correct note // Era background tokens (for visual cues) // Enemy (temporal anomaly) // Puzzle note (for rhythm puzzles) // Magical instrument (a glowing orb) // Main character: Lyra // --- Era Data --- var eras = [{ name: "Ancient Egypt", music: "music_egypt", color: 0xf4e285, token: 'era_egypt', puzzlePattern: [1, 0, 1, 1, 0, 1] }, { name: "Renaissance Italy", music: "music_renaissance", color: 0x8ecae6, token: 'era_renaissance', puzzlePattern: [1, 1, 0, 1, 0, 1, 1] }, { name: "Jazz Age America", music: "music_jazz", color: 0x22223b, token: 'era_jazz', puzzlePattern: [1, 0, 1, 0, 1, 1, 0, 1] }, { name: "Dystopian Future", music: "music_future", color: 0x7b2ff2, token: 'era_future', puzzlePattern: [1, 1, 1, 0, 1, 0, 1, 1, 0] }]; var currentEraIndex = 0; // --- UI Elements --- var eraTitle = new Text2('', { size: 90, fill: "#fff" }); eraTitle.anchor.set(0.5, 0); LK.gui.top.addChild(eraTitle); var scoreTxt = new Text2('0', { size: 90, fill: "#fff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); var instructionTxt = new Text2('', { size: 60, fill: 0xFFE066 }); instructionTxt.anchor.set(0.5, 0); LK.gui.bottom.addChild(instructionTxt); // --- Game State --- var lyra = new Lyra(); game.addChild(lyra); lyra.x = 2048 / 2; lyra.y = 2732 - 400; var anomaly = null; var notes = []; var puzzleActive = false; var puzzleIndex = 0; var puzzlePattern = []; var puzzleTimer = null; var puzzleHitWindow = 180; // px var puzzleMissed = false; var dragNode = null; var lastScore = 0; // --- Era Token (background cue) --- var eraToken = null; function setEraToken(tokenId) { if (eraToken) { eraToken.destroy(); eraToken = null; } eraToken = LK.getAsset(tokenId, { anchorX: 0.5, anchorY: 0.5, scaleX: 3, scaleY: 3, x: 2048 / 2, y: 2732 / 2 - 400 }); game.addChild(eraToken); // Send to back if (game.children.length > 1) { game.setChildIndex(eraToken, 0); } } // --- Start Era --- function startEra(idx) { currentEraIndex = idx; var era = eras[idx]; // Set background color game.setBackgroundColor(era.color); // Set era title eraTitle.setText(era.name); // Set era token setEraToken(era.token); // Play music LK.playMusic(era.music, { fade: { start: 0, end: 1, duration: 1200 } }); // Reset score lastScore = LK.getScore(); scoreTxt.setText(LK.getScore()); // Show instruction instructionTxt.setText("Tap the notes in rhythm to restore harmony!"); // Start anomaly encounter after a short delay LK.setTimeout(function () { spawnAnomaly(); }, 1200); } // --- Spawn Anomaly (enemy) --- function spawnAnomaly() { if (anomaly) { anomaly.destroy(); anomaly = null; } anomaly = new Anomaly(); anomaly.x = 2048 / 2; anomaly.y = 800; game.addChild(anomaly); // Start puzzle after a short delay LK.setTimeout(function () { startPuzzle(); }, 800); } // --- Start Puzzle (Rhythm) --- function startPuzzle() { puzzleActive = true; puzzleIndex = 0; puzzlePattern = eras[currentEraIndex].puzzlePattern; notes = []; puzzleMissed = false; // Remove old notes for (var i = game.children.length - 1; i >= 0; i--) { var ch = game.children[i]; if (ch && ch.isNote) { ch.destroy(); } } // Schedule notes var noteSpacing = 180; var startY = -100; for (var i = 0; i < puzzlePattern.length; i++) { if (puzzlePattern[i]) { var note = new Note(); note.x = 2048 / 2; note.y = startY - i * noteSpacing; note.targetY = 2048 / 2; note.isNote = true; notes.push(note); game.addChild(note); } else { notes.push(null); } } // Show instruction instructionTxt.setText("Tap the notes as they reach the instrument!"); // Start puzzle timer if (puzzleTimer) LK.clearInterval(puzzleTimer); puzzleTimer = LK.setInterval(function () { // Check for missed notes for (var i = 0; i < notes.length; i++) { var note = notes[i]; if (note && !note.hit && note.y >= lyra.y - puzzleHitWindow) { // Missed! note.hit = true; puzzleMissed = true; LK.getSound('note_miss').play(); LK.effects.flashObject(note, 0xff0000, 400); // End puzzle after a short delay LK.setTimeout(function () { endPuzzle(false); }, 600); break; } } }, 60); } // --- End Puzzle --- function endPuzzle(success) { puzzleActive = false; if (puzzleTimer) { LK.clearInterval(puzzleTimer); puzzleTimer = null; } // Remove notes for (var i = 0; i < notes.length; i++) { if (notes[i]) notes[i].destroy(); } notes = []; if (success) { // Defeat anomaly LK.getSound('anomaly_defeat').play(); LK.effects.flashObject(anomaly, 0x00ff00, 600); LK.setScore(LK.getScore() + 1); scoreTxt.setText(LK.getScore()); // Remove anomaly after a moment LK.setTimeout(function () { if (anomaly) { anomaly.destroy(); anomaly = null; } // Next era or win if (currentEraIndex < eras.length - 1) { instructionTxt.setText("Era restored! Prepare for the next journey..."); LK.setTimeout(function () { startEra(currentEraIndex + 1); }, 1200); } else { instructionTxt.setText("Timeline restored! You win!"); LK.setTimeout(function () { LK.showYouWin(); }, 1200); } }, 800); } else { // Flash screen red LK.effects.flashScreen(0xff0000, 800); instructionTxt.setText("Missed! Try again..."); LK.setTimeout(function () { LK.showGameOver(); }, 1200); } } // --- Input Handling --- game.down = function (x, y, obj) { // Only allow input during puzzle if (!puzzleActive) return; // Check for note hit for (var i = 0; i < notes.length; i++) { var note = notes[i]; if (note && !note.hit) { // If note is close to instrument var dx = Math.abs(note.x - lyra.x); var dy = Math.abs(note.y - lyra.y); if (dx < 120 && dy < puzzleHitWindow) { note.hit = true; LK.getSound('note_hit').play(); LK.effects.flashObject(note, 0x00ff00, 300); // Animate note tween(note, { scaleX: 1.5, scaleY: 1.5, alpha: 0 }, { duration: 300, onFinish: function onFinish() { note.destroy(); } }); // If last note, win var allHit = true; for (var j = 0; j < notes.length; j++) { if (notes[j] && !notes[j].hit) allHit = false; } if (allHit && !puzzleMissed) { endPuzzle(true); } return; } } } // If tap but no note, do nothing }; game.move = function (x, y, obj) { // Drag Lyra horizontally only (for future: allow moving to catch notes) // For now, Lyra is fixed }; game.up = function (x, y, obj) {}; // --- Game Update Loop --- game.update = function () { // Animate notes for (var i = 0; i < notes.length; i++) { var note = notes[i]; if (note && !note.hit) { note.update(); } } }; // --- Start Game --- startEra(0);
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,372 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+// Anomaly (enemy)
+var Anomaly = Container.expand(function () {
+ var self = Container.call(this);
+ var anomalySprite = self.attachAsset('anomaly', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.hp = 3;
+ self.flash = function () {
+ tween(anomalySprite, {
+ tint: 0xffffff
+ }, {
+ duration: 120,
+ onFinish: function onFinish() {
+ tween(anomalySprite, {
+ tint: 0xff4444
+ }, {
+ duration: 120
+ });
+ }
+ });
+ };
+ return self;
+});
+// Lyra (the player)
+var Lyra = Container.expand(function () {
+ var self = Container.call(this);
+ var lyraSprite = self.attachAsset('lyra', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Instrument is always attached to Lyra
+ var instrument = self.attachAsset('instrument', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 0,
+ y: 100
+ });
+ // For future: instrument can animate or glow
+ self.instrument = instrument;
+ // For drag
+ self.down = function (x, y, obj) {};
+ self.up = function (x, y, obj) {};
+ return self;
+});
+// Note (for rhythm puzzles)
+var Note = Container.expand(function () {
+ var self = Container.call(this);
+ var noteSprite = self.attachAsset('note', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 12; // pixels per tick
+ self.targetY = 0;
+ self.hit = false;
+ self.update = function () {
+ if (self.y < self.targetY) {
+ self.y += self.speed;
+ if (self.y > self.targetY) self.y = self.targetY;
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x181818
+});
+
+/****
+* Game Code
+****/
+// Music for each era
+// Sound for anomaly defeat
+// Sound for wrong note
+// Sound for correct note
+// Era background tokens (for visual cues)
+// Enemy (temporal anomaly)
+// Puzzle note (for rhythm puzzles)
+// Magical instrument (a glowing orb)
+// Main character: Lyra
+// --- Era Data ---
+var eras = [{
+ name: "Ancient Egypt",
+ music: "music_egypt",
+ color: 0xf4e285,
+ token: 'era_egypt',
+ puzzlePattern: [1, 0, 1, 1, 0, 1]
+}, {
+ name: "Renaissance Italy",
+ music: "music_renaissance",
+ color: 0x8ecae6,
+ token: 'era_renaissance',
+ puzzlePattern: [1, 1, 0, 1, 0, 1, 1]
+}, {
+ name: "Jazz Age America",
+ music: "music_jazz",
+ color: 0x22223b,
+ token: 'era_jazz',
+ puzzlePattern: [1, 0, 1, 0, 1, 1, 0, 1]
+}, {
+ name: "Dystopian Future",
+ music: "music_future",
+ color: 0x7b2ff2,
+ token: 'era_future',
+ puzzlePattern: [1, 1, 1, 0, 1, 0, 1, 1, 0]
+}];
+var currentEraIndex = 0;
+// --- UI Elements ---
+var eraTitle = new Text2('', {
+ size: 90,
+ fill: "#fff"
+});
+eraTitle.anchor.set(0.5, 0);
+LK.gui.top.addChild(eraTitle);
+var scoreTxt = new Text2('0', {
+ size: 90,
+ fill: "#fff"
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+var instructionTxt = new Text2('', {
+ size: 60,
+ fill: 0xFFE066
+});
+instructionTxt.anchor.set(0.5, 0);
+LK.gui.bottom.addChild(instructionTxt);
+// --- Game State ---
+var lyra = new Lyra();
+game.addChild(lyra);
+lyra.x = 2048 / 2;
+lyra.y = 2732 - 400;
+var anomaly = null;
+var notes = [];
+var puzzleActive = false;
+var puzzleIndex = 0;
+var puzzlePattern = [];
+var puzzleTimer = null;
+var puzzleHitWindow = 180; // px
+var puzzleMissed = false;
+var dragNode = null;
+var lastScore = 0;
+// --- Era Token (background cue) ---
+var eraToken = null;
+function setEraToken(tokenId) {
+ if (eraToken) {
+ eraToken.destroy();
+ eraToken = null;
+ }
+ eraToken = LK.getAsset(tokenId, {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ scaleX: 3,
+ scaleY: 3,
+ x: 2048 / 2,
+ y: 2732 / 2 - 400
+ });
+ game.addChild(eraToken);
+ // Send to back
+ if (game.children.length > 1) {
+ game.setChildIndex(eraToken, 0);
+ }
+}
+// --- Start Era ---
+function startEra(idx) {
+ currentEraIndex = idx;
+ var era = eras[idx];
+ // Set background color
+ game.setBackgroundColor(era.color);
+ // Set era title
+ eraTitle.setText(era.name);
+ // Set era token
+ setEraToken(era.token);
+ // Play music
+ LK.playMusic(era.music, {
+ fade: {
+ start: 0,
+ end: 1,
+ duration: 1200
+ }
+ });
+ // Reset score
+ lastScore = LK.getScore();
+ scoreTxt.setText(LK.getScore());
+ // Show instruction
+ instructionTxt.setText("Tap the notes in rhythm to restore harmony!");
+ // Start anomaly encounter after a short delay
+ LK.setTimeout(function () {
+ spawnAnomaly();
+ }, 1200);
+}
+// --- Spawn Anomaly (enemy) ---
+function spawnAnomaly() {
+ if (anomaly) {
+ anomaly.destroy();
+ anomaly = null;
+ }
+ anomaly = new Anomaly();
+ anomaly.x = 2048 / 2;
+ anomaly.y = 800;
+ game.addChild(anomaly);
+ // Start puzzle after a short delay
+ LK.setTimeout(function () {
+ startPuzzle();
+ }, 800);
+}
+// --- Start Puzzle (Rhythm) ---
+function startPuzzle() {
+ puzzleActive = true;
+ puzzleIndex = 0;
+ puzzlePattern = eras[currentEraIndex].puzzlePattern;
+ notes = [];
+ puzzleMissed = false;
+ // Remove old notes
+ for (var i = game.children.length - 1; i >= 0; i--) {
+ var ch = game.children[i];
+ if (ch && ch.isNote) {
+ ch.destroy();
+ }
+ }
+ // Schedule notes
+ var noteSpacing = 180;
+ var startY = -100;
+ for (var i = 0; i < puzzlePattern.length; i++) {
+ if (puzzlePattern[i]) {
+ var note = new Note();
+ note.x = 2048 / 2;
+ note.y = startY - i * noteSpacing;
+ note.targetY = 2048 / 2;
+ note.isNote = true;
+ notes.push(note);
+ game.addChild(note);
+ } else {
+ notes.push(null);
+ }
+ }
+ // Show instruction
+ instructionTxt.setText("Tap the notes as they reach the instrument!");
+ // Start puzzle timer
+ if (puzzleTimer) LK.clearInterval(puzzleTimer);
+ puzzleTimer = LK.setInterval(function () {
+ // Check for missed notes
+ for (var i = 0; i < notes.length; i++) {
+ var note = notes[i];
+ if (note && !note.hit && note.y >= lyra.y - puzzleHitWindow) {
+ // Missed!
+ note.hit = true;
+ puzzleMissed = true;
+ LK.getSound('note_miss').play();
+ LK.effects.flashObject(note, 0xff0000, 400);
+ // End puzzle after a short delay
+ LK.setTimeout(function () {
+ endPuzzle(false);
+ }, 600);
+ break;
+ }
+ }
+ }, 60);
+}
+// --- End Puzzle ---
+function endPuzzle(success) {
+ puzzleActive = false;
+ if (puzzleTimer) {
+ LK.clearInterval(puzzleTimer);
+ puzzleTimer = null;
+ }
+ // Remove notes
+ for (var i = 0; i < notes.length; i++) {
+ if (notes[i]) notes[i].destroy();
+ }
+ notes = [];
+ if (success) {
+ // Defeat anomaly
+ LK.getSound('anomaly_defeat').play();
+ LK.effects.flashObject(anomaly, 0x00ff00, 600);
+ LK.setScore(LK.getScore() + 1);
+ scoreTxt.setText(LK.getScore());
+ // Remove anomaly after a moment
+ LK.setTimeout(function () {
+ if (anomaly) {
+ anomaly.destroy();
+ anomaly = null;
+ }
+ // Next era or win
+ if (currentEraIndex < eras.length - 1) {
+ instructionTxt.setText("Era restored! Prepare for the next journey...");
+ LK.setTimeout(function () {
+ startEra(currentEraIndex + 1);
+ }, 1200);
+ } else {
+ instructionTxt.setText("Timeline restored! You win!");
+ LK.setTimeout(function () {
+ LK.showYouWin();
+ }, 1200);
+ }
+ }, 800);
+ } else {
+ // Flash screen red
+ LK.effects.flashScreen(0xff0000, 800);
+ instructionTxt.setText("Missed! Try again...");
+ LK.setTimeout(function () {
+ LK.showGameOver();
+ }, 1200);
+ }
+}
+// --- Input Handling ---
+game.down = function (x, y, obj) {
+ // Only allow input during puzzle
+ if (!puzzleActive) return;
+ // Check for note hit
+ for (var i = 0; i < notes.length; i++) {
+ var note = notes[i];
+ if (note && !note.hit) {
+ // If note is close to instrument
+ var dx = Math.abs(note.x - lyra.x);
+ var dy = Math.abs(note.y - lyra.y);
+ if (dx < 120 && dy < puzzleHitWindow) {
+ note.hit = true;
+ LK.getSound('note_hit').play();
+ LK.effects.flashObject(note, 0x00ff00, 300);
+ // Animate note
+ tween(note, {
+ scaleX: 1.5,
+ scaleY: 1.5,
+ alpha: 0
+ }, {
+ duration: 300,
+ onFinish: function onFinish() {
+ note.destroy();
+ }
+ });
+ // If last note, win
+ var allHit = true;
+ for (var j = 0; j < notes.length; j++) {
+ if (notes[j] && !notes[j].hit) allHit = false;
+ }
+ if (allHit && !puzzleMissed) {
+ endPuzzle(true);
+ }
+ return;
+ }
+ }
+ }
+ // If tap but no note, do nothing
+};
+game.move = function (x, y, obj) {
+ // Drag Lyra horizontally only (for future: allow moving to catch notes)
+ // For now, Lyra is fixed
+};
+game.up = function (x, y, obj) {};
+// --- Game Update Loop ---
+game.update = function () {
+ // Animate notes
+ for (var i = 0; i < notes.length; i++) {
+ var note = notes[i];
+ if (note && !note.hit) {
+ note.update();
+ }
+ }
+};
+// --- Start Game ---
+startEra(0);
\ No newline at end of file
Add more vibrant colours to picture
Make this scene more modern like in the present
A 4x5 grid in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Remove man
Saxophone in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Harp in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Drum in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Flute in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Question mark professor Layton game style. In-Game asset. 2d. High contrast. No shadows
12yo blonde girl in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Cute little10yo girl brown hair in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Cute little 7yo girl with blonde curly hair. Professor Layton game style In-Game asset. 2d. High contrast. No shadows
15 yo boy with short scruffy blonde hair professor Layton game style. In-Game asset. 2d. High contrast. No shadows
18yo girl with short brown hair professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Cat in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
White dog with brown patch on eyes professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Turtle in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Frog in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Goldfish in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Basketball ball professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Lego bricks professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Video game console professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Teddy bear professor Layton game style. In-Game asset. 2d. High contrast. No shadows
These dolls in professor Layton game art style
Hot chips or fries in professor Layton game style artwork. In-Game asset. 2d. High contrast. No shadows
Bowl of spaghetti in professor Layton game style artwork. In-Game asset. 2d. High contrast. No shadows
Pizza in professor Layton game style artwork. In-Game asset. 2d. High contrast. No shadows
Chocolate donut in professor Layton game style artwork. In-Game asset. 2d. High contrast. No shadows
Ice cream cone in professor Layton game style artwork. In-Game asset. 2d. High contrast. No shadows
Make her crack a small smile
The word "correct" in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
The word " incorrect" in professor Layton game style. In-Game asset. 2d. High contrast. No shadows
Green tick in professor Layton gamestyle. In-Game asset. 2d. High contrast. No shadows
Button with RETRY PUZZLE on it in professor Layton game style artwork In-Game asset. 2d. High contrast. No shadows
Information symbol in professor Layton game style artwork. In-Game asset. 2d. High contrast. No shadows
Number 1 button professor Layton game style artwork. In-Game asset. 2d. High contrast. No shadows
Number 2
Number 3
Number 4
Number 5
Remove clock
Make sure J and Y is not cut off
How to play button in professor Layton game style font. In-Game asset. 2d. High contrast. No shadows
Make robe hang lower so you can't see it's feet
Make it say play new puzzle
A 16:9 title banner