📎 Scroll - To - Download

Building Smart AI for Web-Based Minigames: A Beginner-Friendly Guide

Zona Waktu 1:23 PM
-Category : Article
Thumbnail

Creating AI for Web-Based Minigames: A Step-by-Step Guide

AI (Artificial Intelligence) plays a significant role in enhancing the gaming experience by controlling non-player characters (NPCs) or automating game mechanics. In this tutorial, we will build a simple AI for a web-based minigame using JavaScript and HTML5 Canvas.

Understanding the Basics of AI in Games

Before diving into the coding process, it’s essential to understand how AI functions in games. The AI’s primary goal is to make intelligent decisions based on the game’s current state. Some key aspects include:

Step 1: Setting Up the Game Environment

We will create an HTML5 file with a canvas element where our game will run. Below is the basic setup:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Minigame with AI</title>
        <style>
            canvas { 
                border: 2px solid black; 
                display: block; 
                margin: auto;
            }
        </style>
    </head>
    <body>
        <canvas id="gameCanvas" width="400" height="400"></canvas>
        <script src="game.js"></script>
    </body>
    </html>
    

Step 2: Coding the Game Logic

Now, we will write the game logic in JavaScript. We will define the player, AI, and movement functions inside game.js.

    const canvas = document.getElementById("gameCanvas");
    const ctx = canvas.getContext("2d");

    let player = { x: 50, y: 50, size: 20, speed: 5 };
    let ai = { x: 300, y: 300, size: 20, speed: 1 };

    function drawCharacter(character, color) {
        ctx.fillStyle = color;
        ctx.fillRect(character.x, character.y, character.size, character.size);
    }

    function moveAI() {
        if (ai.x < player.x) ai.x += ai.speed;
        if (ai.x > player.x) ai.x -= ai.speed;
        if (ai.y < player.y) ai.y += ai.speed;
        if (ai.y > player.y) ai.y -= ai.speed;
    }

    function update() {
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        drawCharacter(player, "blue");
        moveAI();
        drawCharacter(ai, "red");
        requestAnimationFrame(update);
    }

    update();
    

Step 3: Adding Player Controls

To make the game interactive, we need to allow the player to move using the arrow keys.

    document.addEventListener("keydown", function(event) {
        if (event.key === "ArrowUp" && player.y > 0) player.y -= player.speed;
        if (event.key === "ArrowDown" && player.y < canvas.height - player.size) player.y += player.speed;
        if (event.key === "ArrowLeft" && player.x > 0) player.x -= player.speed;
        if (event.key === "ArrowRight" && player.x < canvas.width - player.size) player.x += player.speed;
    });
    

Step 4: Improving AI Intelligence

We can make the AI more advanced by adding different behaviors based on conditions.

AI Avoidance Behavior

Instead of always chasing the player, the AI can sometimes try to avoid them:

    let aiMode = "chase"; // AI can switch between "chase" and "avoid"

    function moveAI() {
        if (aiMode === "chase") {
            if (ai.x < player.x) ai.x += ai.speed;
            if (ai.x > player.x) ai.x -= ai.speed;
            if (ai.y < player.y) ai.y += ai.speed;
            if (ai.y > player.y) ai.y -= ai.speed;
        } else if (aiMode === "avoid") {
            if (ai.x < player.x) ai.x -= ai.speed;
            if (ai.x > player.x) ai.x += ai.speed;
            if (ai.y < player.y) ai.y -= ai.speed;
            if (ai.y > player.y) ai.y += ai.speed;
        }
    }

    setInterval(() => {
        aiMode = aiMode === "chase" ? "avoid" : "chase";
    }, 3000); // Switch AI mode every 3 seconds
    

Step 5: Adding Collision Detection

To make the game more interactive, we should detect when the AI reaches the player.

    function checkCollision() {
        if (
            player.x < ai.x + ai.size &&
            player.x + player.size > ai.x &&
            player.y < ai.y + ai.size &&
            player.y + player.size > ai.y
        ) {
            alert("Game Over! The AI caught you.");
            player.x = 50;
            player.y = 50;
            ai.x = 300;
            ai.y = 300;
        }
    }

    function update() {
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        drawCharacter(player, "blue");
        moveAI();
        drawCharacter(ai, "red");
        checkCollision();
        requestAnimationFrame(update);
    }

    update();
    

Future Improvements

We can continue improving the AI by:

Conclusion

By following these steps, we have built a simple yet functional AI for a web-based minigame. This project lays the groundwork for creating more advanced AI-driven gameplay experiences. The AI logic can be expanded to create enemy behaviors, friendly NPCs, or even cooperative AI players.


Suggest Edit Save & Download Share

Join Telegram Empires@buby_empires - .com


Another Topic