How to Create an AI Chat with Gemini in Construct 3

UpvoteUpvote 7 DownvoteDownvote

Index

Features on these Courses

Stats

1,641 visits, 1,964 views

Tools

Translations

This tutorial hasn't been translated.

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

Published on 26 Aug, 2025.

Step 3: Structuring Your Code

To keep the project organized, we'll use three scripts:

  • Gemini.ts: The core logic for our AI. This file will be responsible for building requests to the Gemini API, sending them, and processing the responses.
  • importsForEvents.ts: A bridge file required by Construct. It imports our module so that its functions can be called from the event sheet scripting environment.
  • main.ts: The project's entry point, executed on startup. We'll use it to initialize global variables, like a convenient reference to Construct's runtime object.

The setup for importsForEvents.ts and main.ts is minimal.

importsForEvents.ts contains a single line to import our functions:

import * as Gemini from "./Gemini.js";

We mainly need main.ts to make Construct's runtime variable easily accessible throughout the project:

declare global {
    var runtime: IRuntime;
}

runOnStartup(async  (runtime: IRuntime) =>  {  
    globalThis.runtime =  runtime;
    })
  • 2 Comments

  • Order by
Want to leave a comment? Login or Register an account!
  • Good tutorial. I'm not sure how memory is normally achieved, but sending the entire chat back to the ai each prompt does not sound good. It will use an exponentially larger amount of tokens. Not sure how it will effect the free tier, but it will cost you a fortune if you have to pay.

    • Hi, thank you for the comment!

      You're right, sending the full history increases token usage. This method is necessary because models like Gemini are stateless and need that history for context. For a real application, it's vital to manage this to control costs. Common solutions include using a "sliding window" of recent messages or summarizing the chat.

      From a game design perspective, I also believe it's better to guide the AI instead of allowing completely free chat. Using structured output helps maintain creative control over the game's narrative, a topic I hope to explore soon.