在这个数字化时代,游戏已经成为一种重要的娱乐方式。若你想在自己的Ubuntu系统上快速搭建一个web小游戏网站,并允许公网用户远程访问,本文将带你完成这一过程。
环境准备
首先,确保你的Ubuntu系统已安装并更新到最新版本。你可以通过以下命令更新你的系统:
sudo apt update && sudo apt upgrade -y
接下来,需要安装一些必备的软件包。我们将使用Node.js和Express作为后端框架。若未安装Node.js,可使用以下命令进行安装:
sudo apt install nodejs npm -y
搭建简单的Web游戏服务器
- 创建项目文件夹
在终端中,使用以下命令创建一个新的项目文件夹并进入该目录:
mkdir web-game-site
cd web-game-site
- 初始化Node.js项目
在项目目录中,输入以下命令初始化一个新的Node.js项目:
npm init -y
这将生成一个package.json
文件,你可以在其中管理项目依赖和配置。
- 安装Express框架
接下来,安装Express框架:
npm install express
- 创建服务器代码
在项目目录中创建一个新的文件,命名为server.js
,并填入以下代码:
const express = require('express');
const path = require('path');
const app = express();
const port = 3000;
// 让Express能提供静态文件
app.use(express.static('public'));
// 根路由
app.get('/', (req, res) => {
res.sendFile(path.join(__dirname, 'public', 'index.html'));
});
// 启动服务器
app.listen(port, () => {
console.log(`服务器运行在 http://localhost:${port}`);
});
- 创建游戏页面
在项目根目录下创建一个新的文件夹public
,并在其中创建index.html
文件,写入以下代码:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>小游戏</title>
<style>
body { display: flex; justify-content: center; align-items: center; height: 100vh; }
canvas { border: 1px solid black; }
</style>
</head>
<body>
<canvas id="gameCanvas" width="400" height="400"></canvas>
<script>
const canvas = document.getElementById('gameCanvas');
const ctx = canvas.getContext('2d');
// 简单的方块游戏逻辑
let x = 50, y = 50, size = 30;
function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = 'blue';
ctx.fillRect(x, y, size, size);
}
function update() {
x += 1;
if (x > canvas.width) x = -size;
draw();
requestAnimationFrame(update);
}
update();
</script>
</body>
</html>
启动服务器
在终端中执行以下命令,启动你的Node.js服务器:
node server.js
打开浏览器,访问http://localhost:3000
,你应该能看到一个简单的蓝色方块在画布上移动。
配置公网访问
为了让公网用户访问你的小游戏网站,你需要确保防火墙允许外部访问3000端口。使用以下命令开启该端口:
sudo ufw allow 3000
然后,获取你的公网IP地址。可以通过访问WhatIsMyIP.com来查看。
现在,公网用户可以通过访问http://<你的公网IP>:3000
来访问你的游戏网站。
结语
至此,你已经成功在Ubuntu上搭建了一个可以被公网用户访问的Web小游戏网站。虽然这里展示的是一个简单的例子,但你可以继续扩展游戏功能,增加更多的交互和复杂性。希望本文能帮助你在自己喜爱的领域迈出第一步!