打算做一个类似RimWorld的游戏,这里记录一下历程。首先,简单回顾一下。

2018年12月23日  场景管理,打算使用四叉树,后来发现四叉树在空间组织和内存占用方面并不占优势,之后计划使用地图分块。

2018年12月23日  那几天主要琢磨AI寻路,网上找了几份代码,总结归纳,写了一个雏形。

2019年05月08日  之前很多东西没有记录,之间一直在造各种轮子。这次是个地图砖块的插值

还有一个带碰撞的爆炸模拟

2019年05月27  走迷宫的小猫娘

实际应用中,发现自己写的A星寻路,性能是个问题,当然现在也没解决,100个单位同时寻路,会卡一秒。

A星寻路应用到场景的例子

测试了一下极限,128x128的图,4万个对象,运行不到10秒崩掉。5万个启动不了,直接内存报错。想当年我用双核u,集成显卡玩星际争霸2,一秒一帧但不崩,佩服暴雪程序的稳定。

2019-05-31  这些天一直在修正A星算法,优化了内存分配,修正了寻路估值算法,下面是两个效果对比图。

修正前,使用曼哈顿算法,特点是快,但只会走直线。

修正后,直接使用开方算法,视觉上路径比较真实一点

2019-6-8  总结一下这几天的作业。首先,更新了一下自己写的基于tile的轻型2D物理引擎,但还是有一些问题未解决,比如刚体卡在角落里面不动。

这里说一下为什么不使用box2D之类的比较出名的物理引擎,因为我要做的目标是上面的那种大规模的场景,而box2D、Chipmunk我都测试过了,两者性能至少目前都差不多,两个字:太慢!这类物理引擎,为了真实性,计算比较精确,每条边都进行计算,至于场景分割,不知道他们用什么算法。box2D刚体在500个左右的时候,已经卡成幻灯片了,像上面那种动辄几百几千单位的,实在没法用。我的游戏还要进行AI计算、寻路、事件处理,不只运行一个物理引擎。这几天一直在完善这个小物理引擎,卡到角落里面的原因,可能是刚体移动的时候,检测砖块发生冲突,导致力抵消,但没有好办法解决。这个引擎只是基于tile地图的简单物理性质模拟,速度非常快,不加刚体互斥运行一两万个没啥问题,加上刚体互斥,4、5000个也没有压力。

这是加了刚体互斥,用GDI渲染的效果图,不足的地方,就是角落里面总是卡着几个刚体,这让人很不爽!

应用到场景中的效果:有没有一点星际争霸2框着一屏幕单位的感觉?

同时,根据物理引擎特性,将单位汇聚一点之后,单位会随着时间自己慢慢散开

先记录到这吧,希望大家支持!

最新文章

  1. em与px换算关系以及常用列表
  2. centos7.0 下安装git(http方式)
  3. python的函数调用和参数传递
  4. HDU 4045 Machine scheduling (组合数学-斯特林数,组合数学-排列组合)
  5. Source Tree for MAC1.6
  6. tcp 服务端如何判断客户端断开连接
  7. Good Bye 2015 A. New Year and Days 签到
  8. 函数与关系实例,函数运算与SQL,试验与关系元组
  9. 通过js引入当前所需要的js,css等
  10. yield 学习笔记
  11. Javascript数据类型共有六种
  12. Hive笔记——技术点汇总
  13. R语言︱ 数据库SQL-R连接与SQL语句执行(RODBC、sqldf包)
  14. 移动端解决单机事件延迟fastclick
  15. 常用的消息队列中间件mq对比
  16. 1030 Travel Plan Dijkstra+dfs
  17. Android 2019最新面试实战总结
  18. 解决:error LNK2026: 模块对于 SAFESEH 映像是不安全的
  19. Python基础-入门之路PYTHON-包 相对导入&绝对导入
  20. 10 windows server 2012R2 发布MVC框架网站注意事项

热门文章

  1. [K/3Cloud] 在设计时复制已有表单菜单或菜单项快速建立菜单
  2. bzoj3545 Peaks 线段树合并
  3. 洛谷P1257 平面上的最接近点对
  4. PHP PDO使用
  5. 牛客网小白月赛1 B,I
  6. SOJ 2800_三角形
  7. POJ3728 The merchant解题报告
  8. HDU——2874 Connections between cities
  9. python爬虫实现原理
  10. JDBC实例代码