查看完整版本: [-- [伪·学术]Continuum Crowd的实现测试 --]

-> 同人游戏创作/Doujin Games Workshop -> [伪·学术]Continuum Crowd的实现测试 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

Wiksy 2010-04-04 12:48

[伪·学术]Continuum Crowd的实现测试

大概一个月之前,某地放出了一个SupCom2的寻路系统的动画:
http://www.gametrailers.com/video/flowfield-pathfinding-supreme-commander/62420

在该动画中Chris Taylor演示了SupCom2的被称为“流动场(Flowfield)”的寻路系统,可以看到游戏中的单位在移动的时候会自动形成移动阵型避开其他单位。我当时就说“嗯,很好,不如做一下这个来玩玩吧。”

于是就照着影片中提到的网站上的论文开始试验,然后发现与其他论文一样,文中省略了许多实现细节,导致我最后都不知道自己做的对不对-_-
http://grail.cs.washington.edu/projects/crowd-flows/

当前结果如下:
[attachment=80892]

有两个可以控制移动目的地的组,移动的时候可以见到各个单位会先行回避障碍物和其他组。
不过当然距真正使用到游戏中还有非常长的距离。比如说不同的单位大小,以及如果每个单位都有自己的速度和移动目的地的话怎么办之类。不过总之在开始沉迷世界树3之前先把当前结果放出来好了以后就再也不更新了

附件是exe和源码。源码需要使用SFML(http://www.sfml-dev.org/)和boost,且包含“反正是试验做,代码随便写好了”的烂代码,比如说成员变量全都是public,以及效率极低的渲染,请勿见怪
控制说明:
[D]键:打开/关闭势能场Debug显示(小心移动到目的地附近时会出现pokemon flash……)
[1] - [4]:选择当前控制组
鼠标左键:选择当前控制组的移动目的地

PS: 直接运行exe反而比在Visual Studio里面跑Release还慢,这是什么原因?

littlewater 2010-04-04 14:56
BOOST 编译绝望了…… |||

跑了下例子,感觉还是有问题的,传上来一截图

注意到框出来的位置,明显是有问题……

对视频感觉还是挺佩服的-- 不知道有没有可以看到真是的模拟效果……

ryuka 2010-04-04 20:09
Siggraph 2006 的文章啊。。我先看看是怎么弄的。

Wiksy 2010-04-04 22:55
引用第1楼littlewater于2010-04-04 14:56发表的  :
BOOST 编译绝望了…… |||
跑了下例子,感觉还是有问题的,传上来一截图
注意到框出来的位置,明显是有问题……
.......



其实boost完全只是偷懒用boost::math::isfinite,没有用其他任何东西

单位的移动有时候确实会感到有些问题。因为我写详细实现的时候发现经常出现比如某二次方程无解,或者速度场为0之类的情况,不得不进行特殊处理。所以我才怀疑到底是不是我对原文的理解有问题……

franniss 2010-04-05 01:04
关注一下~

我先看看exe的效果。

littlewater 2010-04-05 09:11
引用第3楼Wiksy于2010-04-04 22:55发表的  :
其实boost完全只是偷懒用boost::math::isfinite,没有用其他任何东西[表情]
.......


原来如此,我囧以下,改了 boost::math::isinfinite为 _infinite就可以了=-=|||
编译完了- -接下来看以下论文,你没有中间的理解文字可以辅助吗^-^?

Advance 2010-04-06 23:25
尝试理解源码内容但无疑是败了……

littlewater 2010-04-08 19:30
今天看到方才想起来- -

不过要有动力去看已经不容易了=、=|||

ryuka 2010-04-09 18:39
引用第6楼Advance于2010-04-06 23:25发表的  :
尝试理解源码内容但无疑是败了……[表情]

这个先要看懂论文再看源码吧..


查看完整版本: [-- [伪·学术]Continuum Crowd的实现测试 --] [-- top --]


Powered by phpwind v8.7 Code ©2003-2011 phpwind
Time 0.040863 second(s),query:2 Gzip enabled