65.938 articles65.9K
CodeProject 正在变化。 阅读更多。
Home
  • 主页
  • 文章
    • 浏览主题>
      • 人工智能>
        • 自动化
        • 大数据
        • 机器学习
      • 容器>
        • docker
        • 虚拟机
      • 数据库开发>
        • Elasticsearch
        • Lucene
        • mongodb
        • MySQL
        • NoSQL
        • PostgreSQL
        • Redis
        • SQL Server
      • 桌面编程>
        • ATL
        • Cocoa
        • MFC
        • QT
        • Swing
        • 系统
        • UWP
        • Win32
        • WinForms
        • WPF
        • WTL
        • X11
        • XAML
      • DevOps>
        • 敏捷
        • 持续构建
        • 持续交付
        • 部署
        • Git
        • 负载测试
        • 测试
        • TFS
        • 单元测试
      • 游戏开发>
        • Unity
        • Unreal
        • XBox
      • 高性能计算>
        • GPU
        • 优化
      • 物联网>
        • 可穿戴设备
      • 移动应用>
        • Android
        • AWS
        • Azure
        • Cordova
        • ExtJS
        • google-cloud
        • iOS
        • nativescript
        • PhoneGap
        • 存储
        • Windows Mobile
        • Xamarin
      • 多媒体>
        • ASM
        • ASP
        • 音频
        • 音频视频
        • Bash
        • Basic
        • C#
        • C++
        • cobol
        • 压缩
        • Dart
        • dbase
        • 设计/图形
        • DirectX
        • 仿真
        • 异常
        • F#
        • 文件
        • GDI
        • GDI+
        • 图像处理
        • 互联网
        • Java
        • Javascript
        • 本地化
        • Lua
        • MSIL
        • Objective C
        • OpenGL
        • Pascal
        • Perl
        • PHP
        • PowerShell
        • 打印
        • Python
        • Razor
        • 正则表达式
        • Ruby
        • scala
        • Shell
        • 排序
        • SQL
        • 字符串
        • Swift
        • 线程
        • 可用性
        • VB
        • VB.NET
        • VBScript
        • 视频
        • XML
      • 安全>
        • 区块链
        • 密码学
        • 加密
      • Web开发>
        • Apache
        • ASP.NET
        • CSS
        • CSS3
        • HTML
        • HTML5
        • IIS
        • Kestrel
        • LESS
        • Node.js
        • React
        • Spring
        • XHTML
    • 最新文章
    • 热门文章
  • 讨论
  • 功能
    • 新闻
    • 内部通讯
    • 每日构建通讯
    • CodeProject 物品
  • 帮助
    • 什么是“CodeProject”?
    • 通用常见问题
    • 关于我们
2DGDI+设计 / 图形中级开发.NETVisual Basic

WestWorld v5

Terence Wallace
emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2019 年 9 月 23 日

CPOL

3分钟阅读

viewsIcon

5282

downloadIcon

259

一个持续演示有限状态机(FSM)的系列,其中代理居住在一个名为WestWorld的小镇。

 
  • 下载源代码(WestWorld5)- 906.5 KB
  • 下载演示(WestWorld5)- 935.1 KB

注意:这是CodeProject文章系列WestWorld的第5部分。要获取本文的更多背景信息

  • WestWorld系列 1-3
  • WestWorld系列 4
  • WestWorld系列 5(本文)

WestWorld Screen Capture

引言

一个关于如何创建利用有限状态机的代理的实际示例。在本文中,我重点介绍基于瓷砖的2D地图中的路径查找。我们将研究AStar寻路算法的游戏动态。WestWorld有两名居民 - 一名叫做矿工Bob的淘金者和他的妻子Amanda。

在本系列的历史中,我们已经涵盖了以下主题

  • WestWorld1 - 有限状态机(FSM)的基础知识
  • WestWorld2 - 带有两个代理的FSM(矿工和妻子)
  • WestWorld3 - 两个FSM代理之间的消息传递
  • WestWorld4 - WindowsForms GDI+简介
  • WestWorld5- (本文) 2D地图渲染

背景

本教程的目的是向您展示如何从头开始创建一个简单的游戏,而无需像XNA或DirectX或Unity这样的高级API的帮助,它们可以自动执行该过程。我们将仅使用Windows Form GDI+来执行基本的地图渲染。

映射生成

在本系列文章中,我发现使用Tiled(开源且免费的地图编辑器)很有帮助。

Tiled是一个通用的瓦片地图编辑器。它是一个免费工具,可以轻松创建瓦片地图布局。它足够通用,可以允许抽象的东西,例如碰撞区域,敌人生成位置或能量提升位置。它将所有这些数据保存在方便,标准化的*.tmx格式中。

对象层

就本文而言,我们只需要使用对象层和几个瓦片层。 对象层是我们指定特殊游戏元素的地方。使用对象,您可以向地图添加大量信息以供游戏中使用。对象层中的对象可以替代繁琐的替代方法,例如在源代码中硬编码坐标(例如,生成点,出口,入口等)。您还可以维护有关对象图块的附加数据,以存储游戏元素。

瓦片层

为了使Tile Layer简单,该项目使用了开源图形文件。 可以在此处找到许多文件之一:Github上的OpenPixels。

自定义属性

使用Tiled的主要优点之一是,它允许在其所有基本数据结构上设置自定义属性。 为了WestWorld的目的,我正在使用自定义属性来存储将用于匹配游戏中的Enum值的信息。

TiledBasic

为了读取*.tmx文件,我正在使用TileSharp的修改版本,称为TiledBasic。 此实现允许我读取到我的类和游戏信息中。 TiledBasic用于解析和导入由Tiled生成的TMX文件。 *.tmx Map文件中的每个Tile都读取到Map类中。

瓦片渲染

读取所有瓦片后,可以通过Scene类的Draw()方法之一将其渲染在屏幕上。

寻路

游戏中的寻路有助于找到两点之间的最短路径。 这就像解决迷宫的实用方法。 A *基于网格的寻路非常适合游戏,因为角色可以沿着x轴和y轴移动。 WestWorld中使用的改编算法允许AI角色根据到达目标的路线遵循所选的路径。

在此版本(WestWorld v.5)中,我们为NPC定义了“硬编码”路线。 但是,在本系列的未来和最终版本中,我们将讨论一种更聪明的方法,以使非玩家角色(NPC)能够“思考”并选择(即,决策树)要追求的目标。

参考文献

  • 阿拉斯泰尔·艾奇逊
  • 多个CodeProject文章
  • Apress,《通过游戏编程学习VB .NET》(2003年8月14日)
  • 开发者参考:编程Microsoft Visual Basic
  • 广告
  • 隐私
  • Cookie
  • 使用条款
版权所有 © CodeProject, 1999-2025
保留所有权利。
© . All rights reserved.