AI製作生存遊戲 第1集

更新 發佈閱讀 10 分鐘

做一個電腦遊戲,一直都是我心中的清單,稱不上是夢想,但就是想要獲得一個作品的成就感,因為我所認知的遊戲很像是一個藝術品,而且必須包含美術、音樂、互動,更重要的是程式碼與邏輯概念,因此,做出一款遊戲簡直就是將自己的所學發揮到極致,對於我這個工程師來說,簡直就是很厲害的人生清單。

我在以前的時候買過一些書籍,看過一些網路影片,甚至有買線上課程,但礙於我的程式底子太弱,我總是卡關在某些地方,動畫、程式、圖層顯示、物件碰撞等等的因素,加上我是三分鐘熱度的人,我的遊戲總是胎死腹中。

後來一次上班無聊,我打開電腦問了問gpt,問說你能否幫我製作一個電腦遊戲,他說ok,並且很簡單依照我的要求做出了一個有戶動感的小程式,開啟了我新的實驗想法。

我給他了一些我的指令:

  1. topdowm(由上而下)的生存遊戲
  2. 玩家需要躲避殭屍,玩家被殭屍碰撞會受傷
  3. 有血條

她就幫我生了一個小程式,我可以使用wasd操作代表著玩家的綠色光點。

遊戲概念

遊戲概念


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Zombie Survival - Multiplayer Fix UI</title>
<style>
body { margin: 0; background: #222; }
canvas { display: block; margin: 0 auto; background: #333; }
</style>
</head>
<body>
<canvas id="gameCanvas" width="800" height="600"></canvas>
<script>
const canvas = document.getElementById("gameCanvas");
const ctx = canvas.getContext("2d");
const keys = {};

const player = {
x: 400,
y: 300,
speed: 2,
size: 20,
color: "#4caf50",
hp: 100,
attackCooldown: 0,
};

let zombies = [];

function movePlayer() {
if (keys["w"] || keys["ArrowUp"]) player.y -= player.speed;
if (keys["s"] || keys["ArrowDown"]) player.y += player.speed;
if (keys["a"] || keys["ArrowLeft"]) player.x -= player.speed;
if (keys["d"] || keys["ArrowRight"]) player.x += player.speed;
}

function updateZombies() {
for (let zombie of zombies) {
const dx = player.x - zombie.x;
const dy = player.y - zombie.y;
const dist = Math.hypot(dx, dy);
zombie.x += (dx / dist) * zombie.speed;
zombie.y += (dy / dist) * zombie.speed;

if (dist < zombie.size + player.size) {
player.hp -= 0.2;
if (player.hp < 0) player.hp = 0;
}
}
}

function spawnZombie() {
const side = Math.floor(Math.random() * 4);
let x, y;
if (side === 0) { x = 0; y = Math.random() * 600; }
else if (side === 1) { x = 800; y = Math.random() * 600; }
else if (side === 2) { x = Math.random() * 800; y = 0; }
else { x = Math.random() * 800; y = 600; }

zombies.push({ x, y, speed: 1.2, size: 20, color: "#e53935", hp: 30 });
}

function drawEntity(entity) {
ctx.fillStyle = entity.color;
ctx.beginPath();
ctx.arc(entity.x, entity.y, entity.size, 0, Math.PI * 2);
ctx.fill();
}

function drawHUD() {
ctx.fillStyle = "white";
ctx.fillRect(20, 20, 104, 14);
ctx.fillStyle = "#f44336";
ctx.fillRect(22, 22, Math.max(player.hp, 0), 10);
ctx.strokeStyle = "white";
ctx.strokeRect(20, 20, 104, 14);
}

function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
drawEntity(player);
for (let zombie of zombies) {
if (zombie.hp > 0) drawEntity(zombie);
}
drawHUD();

if (player.hp <= 0) {
ctx.fillStyle = "rgba(0,0,0,0.7)";
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = "white";
ctx.font = "48px sans-serif";
ctx.fillText("Game Over", canvas.width / 2 - 120, canvas.height / 2);
}
}

function gameLoop() {
if (player.hp <= 0) return;
movePlayer();
updateZombies();
if (player.attackCooldown > 0) player.attackCooldown--;
zombies = zombies.filter(z => z.hp > 0);
draw();
requestAnimationFrame(gameLoop);
}

setInterval(spawnZombie, 2000);
window.addEventListener("keydown", e => keys[e.key.toLowerCase()] = true);
window.addEventListener("keyup", e => keys[e.key.toLowerCase()] = false);

gameLoop();
</script>
</body>
</html>

以上是程式碼分享,可以將他貼上 JS Bin (連結:https://jsbin.com/?html,output),便可體驗程式碼。

而後來在我的測試下,我發現gemini的遊戲程式生成較厲害且目前是免費,可以不斷叫他生成程式碼,以下我將分享我使用gemini生成遊戲的過程,並以版本更新。並期許我最後可以做出可以連線的生存遊戲(本遊戲所參考的是多年前我玩過的starve.io)

留言
avatar-img
Chill沙龍
1會員
7內容數
我的沙龍,分享露營、旅遊、美食、樂高等所有讓我感到chill的事物。
你可能也想看
Thumbnail
介紹一個優質的遊戲知識部落格:遊戲設計中藥鋪,其中「Game Design 資源分享表」十分推薦遊戲開發者閱讀。另外提到Gamker攻壳是一個專業的遊戲評鑑頻道,其深入的評論幫助作者入坑《健身環大冒險》。作者在後記也分享了自己在遊戲開發上的經歷和挑戰。
Thumbnail
介紹一個優質的遊戲知識部落格:遊戲設計中藥鋪,其中「Game Design 資源分享表」十分推薦遊戲開發者閱讀。另外提到Gamker攻壳是一個專業的遊戲評鑑頻道,其深入的評論幫助作者入坑《健身環大冒險》。作者在後記也分享了自己在遊戲開發上的經歷和挑戰。
Thumbnail
書名:《智能遊戲》 作者:逸昌   機緣巧合之下,受邀參加了【第六屆】你的作品,我的❤得創挑來撰寫一回心得,感到榮幸之餘亦感到非常惶恐。我本來是擔心自己何德何能可與一眾大佬一同擔任提供心得的角色,但現在嘛……大概是擔心本書的作者不知道看完這篇心得之後還有沒有勇氣再登入蕉站,因為我的標題
Thumbnail
書名:《智能遊戲》 作者:逸昌   機緣巧合之下,受邀參加了【第六屆】你的作品,我的❤得創挑來撰寫一回心得,感到榮幸之餘亦感到非常惶恐。我本來是擔心自己何德何能可與一眾大佬一同擔任提供心得的角色,但現在嘛……大概是擔心本書的作者不知道看完這篇心得之後還有沒有勇氣再登入蕉站,因為我的標題
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
我其實不算程式出身。 我在香港中學畢業(亦則高中畢業)後,飛到台灣讀多媒體,大二才接觸程式。 如果是程式老手,可能可以直接用C++、Python這些程式語言來做遊戲。但新手如(當時的)我,需要一個遊戲引擎。 事實上,程式老手也會需要遊戲引擎。畢竟直接使用程式碼大概就和鑽木取火差不多,而遊戲引擎
Thumbnail
我其實不算程式出身。 我在香港中學畢業(亦則高中畢業)後,飛到台灣讀多媒體,大二才接觸程式。 如果是程式老手,可能可以直接用C++、Python這些程式語言來做遊戲。但新手如(當時的)我,需要一個遊戲引擎。 事實上,程式老手也會需要遊戲引擎。畢竟直接使用程式碼大概就和鑽木取火差不多,而遊戲引擎
Thumbnail
這篇文章分享了作者參加的一場由數發協會主辦的遊戲相關講座,主題是創作與創業心態的比較,強調了對自己初衷的思考和找到最適合自己的創作模式的重要性。作者對講座的啟發和心得表示肯定,並推薦給讀者。文章最後提到數發協會的YouTube頻道上有許多免費的講座和開發團隊訪談,作者特別推薦了幾個自己感興趣的內容。
Thumbnail
這篇文章分享了作者參加的一場由數發協會主辦的遊戲相關講座,主題是創作與創業心態的比較,強調了對自己初衷的思考和找到最適合自己的創作模式的重要性。作者對講座的啟發和心得表示肯定,並推薦給讀者。文章最後提到數發協會的YouTube頻道上有許多免費的講座和開發團隊訪談,作者特別推薦了幾個自己感興趣的內容。
Thumbnail
透過玩桌遊的方式學習AI生成圖像技巧,在充滿樂趣的活動中,學會如何操作工具及生成圖像技巧。這款遊戲預計下個月將開設實體課程,適合所有對AI有興趣的人、AI繪圖新手及藝術愛好者。
Thumbnail
透過玩桌遊的方式學習AI生成圖像技巧,在充滿樂趣的活動中,學會如何操作工具及生成圖像技巧。這款遊戲預計下個月將開設實體課程,適合所有對AI有興趣的人、AI繪圖新手及藝術愛好者。
Thumbnail
一個獨立開發者,立志打造顛覆性的遊戲體驗,在開拓全新玩法的道路上,砥礪前行。 大家好,我正在開發一款獨立遊戲,以魔法戰鬥為主題,如果想要嘗試遊戲的demo,歡迎到下方連結處,加入我的Discord群組。 魔法與戰鬥的世界---開發中的遊戲   這款遊戲發生在一個飄浮於雲端之上的世界,
Thumbnail
一個獨立開發者,立志打造顛覆性的遊戲體驗,在開拓全新玩法的道路上,砥礪前行。 大家好,我正在開發一款獨立遊戲,以魔法戰鬥為主題,如果想要嘗試遊戲的demo,歡迎到下方連結處,加入我的Discord群組。 魔法與戰鬥的世界---開發中的遊戲   這款遊戲發生在一個飄浮於雲端之上的世界,
Thumbnail
🎮 探索無限可能:專業電玩遊戲企劃與設計服務 🎮 妳好! 我是 幸福課程 幸福教練黃老師 潮資訊媒體 一位熱愛創作和挑戰未來的電玩遊戲專業企劃 我致力於將無數玩家的夢想變為現實, 無論妳是尋找獨特的遊戲體驗, 還是希望開發下一款爆款遊戲, 我都希望能協助妳達成目標。
Thumbnail
🎮 探索無限可能:專業電玩遊戲企劃與設計服務 🎮 妳好! 我是 幸福課程 幸福教練黃老師 潮資訊媒體 一位熱愛創作和挑戰未來的電玩遊戲專業企劃 我致力於將無數玩家的夢想變為現實, 無論妳是尋找獨特的遊戲體驗, 還是希望開發下一款爆款遊戲, 我都希望能協助妳達成目標。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
遊戲產業似乎從很久以前,各種玩法的類型都已經確立了下來。現在新出品的遊戲,更像是已有玩法機制的排列組合、重新包裝。比起遊戲本身,遊戲公司更願意把創意放在有明確衡量標準的部分,如:劇情、音樂、特效…等。久而久之,人們對遊戲的評價越來越取決於美術、故事等決定表現力的指標...
Thumbnail
遊戲產業似乎從很久以前,各種玩法的類型都已經確立了下來。現在新出品的遊戲,更像是已有玩法機制的排列組合、重新包裝。比起遊戲本身,遊戲公司更願意把創意放在有明確衡量標準的部分,如:劇情、音樂、特效…等。久而久之,人們對遊戲的評價越來越取決於美術、故事等決定表現力的指標...
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News