boxworld开发日记2019-6-8
打算做一个类似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框着一屏幕单位的感觉?

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

先记录到这吧,希望大家支持!
boxworld开发日记2019-6-8的更多相关文章
- 微信小程序开发日记——高仿知乎日报(中)
本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该教 ...
- 微信小程序开发日记——高仿知乎日报(上)
本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP 要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该 ...
- 嵌入式Linux驱动开发日记
嵌入式Linux驱动开发日记 主机硬件环境 开发机:虚拟机Ubuntu12.04 内存: 1G 硬盘:80GB 目标板硬件环境 CPU: SP5V210 (开发板:QT210) SDRAM: 512M ...
- 【原创】shadowebdict开发日记:基于linux的简明英汉字典(四)
全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdic ...
- 【原创】shadowebdict开发日记:基于linux的简明英汉字典(三)
全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdic ...
- 【原创】shadowebdict开发日记:基于linux的简明英汉字典(二)
全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdic ...
- 【原创】shadowebdict开发日记:基于linux的简明英汉字典(一)
全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdic ...
- LayIM.AspNetCore Middleware 开发日记(一)闲言碎语
前言 前几天写博客的时候突然看见了历史上的今天.不禁感慨时光如梭,这系列博客后来被我标注了已经过时,但是还有很多小伙伴咨询我.既然过时就要更新,正好 .NET Core 也出来很久了,于是乎想到把La ...
- 【Android开发日记】之入门篇(七)——Android数据存储(上)
在讲解Android的数据源组件——ContentProvider之前我觉得很有必要先弄清楚Android的数据结构. 数据和程序是应用构成的两个核心要素,数据存储永远是应用开发中最重要的主题之一,也 ...
随机推荐
- [luoguP1097] 统计数字(水)
传送门 这么水的题,也只有提高组第一题了吧 代码 #include <cstdio> #include <iostream> #include <algorithm> ...
- noip模拟赛 分组
分析:暴力分挺多,也挺好想的,个人感觉两个特殊性质没什么卵用. 对于K=1,n ≤ 1024的情况,从后往前贪心地分,如果能和上一组分在一起就分在一起,否则就再开一组,这样可以保证字典序最小.ai ≤ ...
- Eclipse4.5在线安装Aptana插件及配置代码提示教程
一.Aptana插件官网地址 我在网上试过登陆到aptana官网后点击下载,选择下载eclipse插件版,然后页面给出一串地址:http://download.aptana.com/s ...
- 主席树初探--BZOJ1901: Zju2112 Dynamic Rankings
n<=10000的序列做m<=10000个操作:单点修改,查区间第k小. 所谓的主席树也就是一个值域线段树嘛..不过在这里还是%%fotile 需要做一个区间查询,由于查第k小,需要一些能 ...
- msp430入门编程01
msp430单片机最小系统 msp430入门学习 msp430入门编程
- 在windows下安装Django
2013-07-24 21:23:30| 1.安装Python 我安装的是Python(x,y)-2.7.5.0,安装目录在C盘.安装成功后如下图所示. 2.安装Django 从https://w ...
- Binary Tree Postorder Traversal(各种非递归实现,完美利用栈结构模拟)
1.后序遍历的非递归实现.(左右根) 难点:后序遍历的非递归实现是三种遍历方式中最难的一种.因为在后序遍历中,要保证左孩子和右孩子都已被访问并且左孩子在右孩子前访问才能访问根结点,这就为流程的控制带来 ...
- docker容器-快速部署Jenkins
1.在本地虚拟机环境.安装CentOS 7,并安装docker容器 2.在docker容器中执行 docker pull jenkinsci/blueocean 3.查看已经下载的Jenkins镜像 ...
- 深入理解windows系统内的GMT和时区
http://www.itshanghai.net/technology/wdzl_windowsxp/ UTC(Universal Time Coordinated)是通用协调时,这两者几乎是一 ...
- 戴尔iDRAC服务器远程控制设置
对于远程的服务器,我们不能经常性的去机房维护,所以远程控制对于服务器来说就显得至关重要.那么你是用什么方式对服务器进行远程控制呢?远程桌面?还是KVM切换器?NO,你OUT了!如果你用的是戴尔的服务器 ...