前言

众所周知,v 社在 7.00 版本推出了自定义机器人功能,我也做了一个 ai 放到了创意工坊上。应广大玩家要求,也为了与大家交流 dota2 ai 的开发技术,我打算写一点浅显易懂的开发教程,希望无论是开发者还是普通玩家都能够理解。

dota2 在刚推出时,新闻上就列举了很多 ai 的特性,那时候 ai 可以说是很强。但是由于 v 社天天度假,忽视了 ai 的开发,现在的 ai 还停留在远古版本。所以,为了更好度假!不不不,是为了提升 ai 的水平,便把 ai 开放给玩家制作。
IceFrog:Dota2 新增血魔和船长,全新 AI 加入
DOTA2 为适应各水平玩家 大幅优化 AI 智能
浅谈 DOTA2 AI 打匹配的五大优点和三大缺点

Dota2 ai 简介

说了这么多,还是回归正题吧,Dota2 的 ai 到底是怎样制作的呢?
dota2ai 是用 Lua 脚本语言实现的。Lua 是一种解释型编程语言,如果以前学过编程语言那就很好掌握,没学过也没关系,因为 Lua 语言的语法很简洁,即使是小白也能很快理解。当然,本文不会介绍 Lua 语言的基本语法,如果想进一步学习,可以参考 Lua 教程或者是《Lua 程序设计第二版》。

那么,我们应该在什么环境下编写 Lua 脚本呢?很简单,我们没有什么 IDE(集成开发环境)。任何文本编辑器都可以拿来编写,就连记事本也可以!不过还是不推荐使用记事本,因为没有基本的语法高亮等功能,我使用的是 notepad++,一个很简洁的文本编辑器,当然如果你有更好的编辑器也可以直接使用。

所有正在开发的 ai 脚本都存放于dota 2 beta\game\dota\scripts\vscripts\bots文件夹下,如果没有 bots 目录便需要自己创建一个。而当你上传你的脚本到工坊时,就会上传该目录下的内容。而下载的脚本则放在你 Steam 安装目录下自己的文件夹中。不出意外的话,你会找到bots_example文件夹,里面有 V 社原版 ai 的一部分。当然,原版 AI 并不是由 lua 编写的,而是由 C++ 编写,而完整的 AI 源码并没有公布。这一部分示例,是由 C++ 翻译为 Lua 的。

目前,开发 ai 大致有两种路线,第一种是完全控制,这意味着你需要编写从游戏开始到游戏结束的所有 ai 代码。而第二种则是部分控制,这只需要你接手你想控制的部分,比如某个英雄的技能操作,游走的思路等。前一种工作量很大,需要完全重构 AI 系统。而后一种则比较简单的方法,本系列文章主要是讲解后一种。有的玩家经常反馈:为什么 ai 总是喜欢抱团一起推,一个个送。这也很好解释,因为目前创意工坊里的 ai 大部分都是属于后一种,继承了大部分默认 ai 的思路。

至于如何开启一局社区原创机器人游戏,想必大家都已身经百战,不用我说了。不过我还是介绍一下。打开 dota2, 创建房间,选择本地主机,选择 “编辑”,在高级房间设置中,勾选 “机器人填满空位”,随后订阅并使用创意工坊的脚本。如果选择本地开发脚本,那么使用的便是我们在 bots 文件夹下编写的脚本。

在接下来的文章中,我会为大家介绍如何开发编辑英雄出装加点,英雄的技能操作,喝神泉模式的实现等等。

参考文档:

Dota2 AI 开发 tutorial(一)AI 的 环境配置
DOTA 机器人脚本 Wiki(英文版更全)
Dota2 AI api 说明

Dota2 AI 简易开发教程相关推荐

  1. Dota2 AI 简易开发教程(一)——选择阵容及技能使用

    在第一篇教程中,我们主要介绍了Dota2 AI的基本情况,在这篇文章中,我们将介绍如何为AI选择阵容和技能使用(以宙斯为例). 选择阵容 在官方开发者维基中有着这样的说明: 如果你想控制英雄选择和分路 ...

  2. Dota2 AI 简易开发教程(二)——英雄出装及其相关功能

    距离上一篇教程也过去一个多月了,是时候写一篇新教程了.上一篇文章主要介绍了如何选择阵容和技能的使用,在这一篇文章中,我们将介绍如何配置英雄出装和其相关的一些模块. 勘误 首先先纠正一下上一篇文章中的一 ...

  3. 介绍DOTA2 AI的开发基础——调试

    内容 队伍总体数据查看 查看脚本输出调试 内容 简单说一下dota2 AI的调试步骤.日后有更新或者别的技巧会继续跟进补充.V社官方文档为 https://developer.valvesoftwar ...

  4. iOS Touch ID 简易开发教程

    基础知识 支持系统和机型 iOS系统的指纹识别功能最低支持的机型为iPhone 5s,最低支持系统为iOS 8,虽然安装iOS 7系统的5s机型可以使用系统提供的指纹解锁功能,但由于API并未开放,所 ...

  5. 【Dopi Micropython 视觉AI应用开发教程】【实验5】MJPEG编码

    [实验5]MJPEG编码 简介 示例 延伸 简介 MJPEG(Motion Joint Photographic Experts Group)是一种视频压缩格式,其中每一帧图像都分别使用JPEG编码, ...

  6. Dota2 AI 开发 (二)定制AI阵容 配置英雄出装

    在Dota2 AI 开发(一)环境配置 中介绍了如何搭建 Dota2 AI 的开发环境,在这篇文章中,主要介绍Dota2中AI的常规控制方式,并介绍如何在人机比赛中配置一个裸跳刀的Sven. 常用指令 ...

  7. 鸿蒙系统,鸿蒙app简易登录界面,界面开发教程

    鸿蒙系统,鸿蒙app简易登录界面,界面开发教程. // 这个是主Ability public class MainAbilitySlice extends AbilitySlice {@Overrid ...

  8. 微信小游戏开发教程-游戏实现3

    微信小游戏开发教程-游戏实现3 对象池 由于游戏过程中会创建很多临时对象,这些对象很快又不再使用,垃圾回收器也能帮我们主动回收这部分垃圾,但是回收时间不可控制,同时增大了创建对象的开销,所以我们使用对 ...

  9. 微信小游戏开发教程-游戏实现2

    微信小游戏开发教程-游戏实现2 绘制地面 类似于绘制背景,读者自行完成代码.src/runtime/land.js 简易View系统 坐标布局对于复杂的页面来说维护相当困难,因此这里我们引入布局的概念 ...

  10. javafx sdk html 布局,JavaFX2开发教程

    JavaFX2开发教程 更新时间:2017/1/24 18:04:00  浏览量:851  手机版 第一回 JavaFX2.0简介 javaFX2.0是JavaFX最新的主要升级发布版.它的很多新特性 ...

最新文章

  1. 网传京东某程序员因压力太大,在商品页面置入骂人代码!京东辟谣:不关我们的事,外部商家干的!...
  2. day1 工资条的制作
  3. 笔记-项目范围管理-需求工程-需求分析的三个阶段-需求提出-需求描述-需求评审...
  4. LeetCode 649. Dota2 参议院(循环队列)
  5. ngxin防止并发(白名单,前端有代理)
  6. 以太坊代码标准是什么_以太坊:什么是ERC20标准?
  7. EMC -- Windows下卸载 Content Server
  8. C++ cin 详解之终极无惑
  9. Debian从光盘apt-get
  10. 点分十进制IP和网络字节序IP互转
  11. python控制小爱同学_GitHub - xinruoyusixian/Blinker-for-xiaoai: 基于micopython 的小爱同学的代码...
  12. tornado程序中出现ValueError: invalid literal for int() with base 16: ‘
  13. [026] 微信公众帐号开发教程第2篇-微信公众帐号的类型(普通和会议)
  14. Xsolla对话成都游戏茶馆CEO
  15. eyoumailserver邮箱服务器与foxmail 邮箱客户端的使用和安装
  16. Linux环境打包Qt程序并部署到Docker容器
  17. Matlab实现图书管理系统
  18. 7月5号cf服务器维护,cf2015年5月7日维护到几点 cf5月7日更新公告
  19. Android卡顿优化分析
  20. 计算机桌面怎么突然变大了,电脑桌面比例突然变大?一招还原比例!

热门文章

  1. 条形码类型及常见条形码
  2. excel Cell函数
  3. java找不到符号 符号:类Xxx 位置xxx的解决方案
  4. matplotlib 绘制直方图和拟合正态曲线
  5. 用741运算放大器搭建RC正弦振荡器:文氏电桥振荡电路
  6. nas磁盘用什么软件测试,手把手教你从NAS拿点空间当电脑硬盘使用 iSCSI开启网络硬盘共享...
  7. 计算机上的根号计算公式,根号计算公式
  8. edz文件怎么导入EPLAN Electric P8
  9. 开发板与思岚RPLIDAR A系列雷达通过串口获取数据
  10. Android虚拟机多开检测