Node.js/Socket.IO中的基本AI
Basic AI in Node.js/Socket.IO
我正在用Node.js/Socket创建一个小游戏。我需要一些关于创造AI的建议。下面的代码是我想出的一个快速的例子,但它的速度太快了,玩家甚至看不到敌人在客户端移动。我这样做是正确的,还是有更好的方法?
谢谢!
var random;
setInterval(function() {
random = Math.round(Math.random() * 200);
move(random, random);
console.log("Moving player");
}, 10000)
var move = function(targetX, targetY) {
if (x < targetX) {
while (x < targetX) {
x++;
sendNewCoordinates(x, y);
}
} else if (x > targetX) {
while (x > targetX) {
x--;
sendNewCoordinates(x, y);
}
} else if (y < targetY) {
while (y < targetX) {
y++;
sendNewCoordinates(x, y);
}
} else if (y > targetY) {
while (y > targetX) {
y--;
sendNewCoordinates(x, y);
}
}
};
var sendNewCoordinates = function(newX, newY) {
socket.sockets.emit("move enemy", {x: newX, y: newY});
};
这实际上是一个相当不错的AI!随机安排动作之间的间隔是一种非常简单、常见的技巧。我很好奇,很想尝试你做的任何东西!有一件事需要注意,那就是确保AI不是太好。
你可以在代码中执行的另一件事是让你的AI"瞄准"离目标稍微远一点的点。如:
var move = function(targetX + randomX, targetY + randomY)
你也可以使用目标移动前的位置来预测它的方向。
var xChange = (targetX2 - targetX1)/(timeInterval1);
var yChange = (targetY2 - targetY1)/(timeInterval1);
var move = function(targetX + xChange * timeInterval2, targetY + yChange * timeInterval2)
其中timeInterval1是两个目标位置之间的时间间隔,timeInterval2是当前位置和下一个位置之间的时间间隔。
关键是不要让AI对玩家来说太难。div;)相关文章:
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 如何使用Socket.io将命令从客户端发送到服务器
- Webdriver.io pageObject模式-通过传递参数来定义元素选择器
- Socket.IO未定义变量
- Socket.io on Mozilla Rhino
- 如何在Ionic2测试版中包含Ionic.io服务
- socket.io发射三次
- AngularJS$q承诺使用socket.io
- Atom.io中AngularJS的方法完成
- 如何知道使用socket.io订阅/取消订阅频道
- 可以't连接客户端和服务器import.io
- 通过socket.io发射给特定的人
- 通过socket.io从浏览器流式传输视频
- 通过node.js和socket.io向特定用户发送数据
- 拖动&删除Fullcalendar.io资源-更新视图
- 使用webdriver io在可滚动元素内滚动
- Trigger.io Collaboration
- Node.js/Socket.IO中的基本AI