中国虚拟军事网(VME)- 专注于武装突袭系列虚拟军事游戏

 找回密码
 加入VME

QQ登录

只需一步,快速开始

搜索
查看: 3392|回复: 17

[闲聊] 任务设想:其实我一直想复制骑马与砍杀、Wargame、文明的系统,实现全岛师级大战

[复制链接]
发表于 2014-2-6 23:34:40 | 显示全部楼层 |阅读模式
本帖最后由 DragonZen 于 2014-2-6 23:59 编辑

众所周知,AA系列由于太吃机器,导致一直以来都是小打小闹。所谓的CTI也只不过就是百十来口子全岛作战,一两个人摸一座城市,反而显得失去真实感。

刚才看推荐的MOD,发现了一个ALiVE模组(http://www.armaholic.com/page.php?id=23684),使用虚拟图标代替真实的单位,进而实现大规模作战,而这和我一直以来的一个想法不谋而合。正在下载,还没有尝试具体做成什么样子了。
其实我一直很期待引入“骑马与砍杀”那种游戏的任务模式,就是大地图作为大部队的移动和相互消耗,小地图是玩家在具体的实景开战。值得一提的是,看介绍ALiVE貌似是在距离内生成单位,但那样无法除了过于密集的战斗。而骑砍则具有场景切换,因而可以限定战场总人数,按两军人数对比的比例来分配上场人数;并且较量几个回合。我觉得这一设定值得借鉴。这样玩家的实景战斗和未上场部队的虚拟消耗同步展开,又好于骑砍原有的模式。

虽然个人时间有限,写了很多设想但并没有开工,但是我觉得实现的话会非常有意思。
更进一步的,可以导入RPG模式,玩家购买和升级单位,打仗赚钱、晋升等等。也可以做RTS式的指挥官角色;此外地图上虚拟战斗的加成随着地形、兵种而有不同的变化,会更加丰富真实。
实际上目前我想到的最困难的环节,是如何设定部队的虚拟移动,总不能高山森林都直线横穿吧,可能要在地图上预设路点;然后如何让部队更具智能,懂得进攻懂得撤退甚至合作,也稍微有些复杂,不过这些战术功能可以一个一个的加入。

嗯,反正就是分享一个想法吧,最近实在太忙了,没时间继续编任务了,呵呵。
 楼主| 发表于 2014-2-6 23:39:30 | 显示全部楼层
本帖最后由 DragonZen 于 2014-2-6 23:57 编辑

其实写过一些草稿,拿出来分享一下:

部队规模,每个单位是一个排左右的兵力:
装甲每小队3-4辆坦克,3*4/4*3人=9人到12人;
机械化步兵2坦8步,3+4+3+4人=14人到18人;
摩托化步兵(步战/AT)20人到26人=2+3*6的三一编制或2*10的普通编制;(普通步兵只能传送时摩托化,到达指定位置后只能步行。)

武直1架一队;防空队2防空;4火炮。这些可以在大地图上虚拟,然后在武直范围内的小地图战斗允许激光引导的导弹,同理有火炮支援等

这样一来,实体战斗就由每一方的几个排之间进行近距离战斗,每一方几十口子在距离1000米左右的范围对战,很激烈了,和我的BlackHole差不多。
虚拟的部分根据部队的经验等级、地形加成等,每一轮以一定的概率消耗地方的HP,经过若干时间最终判定胜负(有点像文明系列的战斗)
至于整个地图要放多少虚拟部队都是无所谓的事情了吧,占的资源应该比较少。
 楼主| 发表于 2014-2-6 23:41:20 | 显示全部楼层
本帖最后由 DragonZen 于 2014-2-6 23:56 编辑

实体战场按照骑砍的方式来:
战斗范围用两个同心圆,外层包括了可以加入和撤退的区域,这样玩家在适当的时候撤出战斗;
限定同一时刻的总人数,入场人数按照双方兵力比来安排;按战损估计场外的损伤,用总剩余兵力(最低值)来计算空位的入场比例。
对于玩家而言,每坚持一轮给一轮的奖励;然后再判断是否战斗——这样有利于给予奖励。
从战斗开始到结束用一个脚本,对每个单位进行编码,进入的单位最后检验是否生存,然后再返回去。
战队主状态:0死亡,1大地图,2大地图候场,3在场上
 楼主| 发表于 2014-2-6 23:44:00 | 显示全部楼层
本帖最后由 DragonZen 于 2014-2-6 23:48 编辑

车速:
公路:快的情况70,五秒钟走100米,中速未知,慢的话20,五秒钟走25米——公路的格子怎么算还是问题,这是极快。
野地:快的情况50,五秒钟走80米,中速未知,慢的话20,五秒钟走25米。走到交叉就继续算吧。

步兵:
快速:快速五秒钟30米,常速5秒钟10米,慢速5秒钟5米。战斗慢速均为5秒2.5米-5米。(无公路状态)

左0,右15000,下1000,上15000,则六角星按横纵来划分就是:
x=sixX*100  y=sixY*100;按照8个方向计算,斜着乘1.4.
下面是每50米确定一个地形采样点的脚本,我多已经写过了,根据森林、高度差等用来计算行军速度的加成:

_i=0;_j=0;allpositions=[];
for [{_j=0}, {_j<300}, {_j=_j+1}] do {
    _list=[];hint format ["j is %1",_j];
    for [{_i=0}, {_i<300}, {_i=_i+1}] do
    {
        _Pforest=(selectBestPlaces [[_i*50,_j*50], 4, "(1 + forest)", 2, 1]);if(count _Pforest>0)then{_Pforest=_Pforest select 0 select 1;}else{_Pforest=0;};
        _Psea=(selectBestPlaces [[_i*50,_j*50], 4, "(1 + sea)", 2, 1]);if(count _Psea>0)then{_Psea=_Psea select 0 select 1;}else{_Psea=0;};
        _Phouses=(selectBestPlaces [[_i*50,_j*50], 4, "(1 + houses)", 2, 1]);if(count _Phouses>0)then{_Phouses=_Phouses select 0 select 1;}else{_Phouses=0;};
    _DN=round ((getTerrainHeightASL [_i*50,_j*50] - getTerrainHeightASL [_i*50,_j*50+50]) atan2 50);
    _DNE=round ((getTerrainHeightASL [_i*50,_j*50] - getTerrainHeightASL [_i*50+50,_j*50+50]) atan2 70);
    _DE=round ((getTerrainHeightASL [_i*50,_j*50] - getTerrainHeightASL [_i*50+50,_j*50]) atan2 50);
    _DSE=round ((getTerrainHeightASL [_i*50,_j*50] - getTerrainHeightASL [_i*50+50,_j*50-50]) atan2 70);
    _DS=round ((getTerrainHeightASL [_i*50,_j*50] - getTerrainHeightASL [_i*50,_j*50-50]) atan2 50);
    _DSW=round ((getTerrainHeightASL [_i*50,_j*50] - getTerrainHeightASL [_i*50-50,_j*50-50]) atan2 70);
    _DW=round ((getTerrainHeightASL [_i*50,_j*50] - getTerrainHeightASL [_i*50-50,_j*50]) atan2 50);
    _DNW=round ((getTerrainHeightASL [_i*50,_j*50] - getTerrainHeightASL [_i*50-50,_j*50+50]) atan2 70);
    _RN=count ([_i*50,_j*50+25] nearRoads 20);
    _RNE=count ([_i*50+25,_j*50+25] nearRoads 20);
    _RE=count ([_i*50+25,_j*50] nearRoads 20);
    _RSE=count ([_i*50+25,_j*50-25] nearRoads 20);
    _RS=count ([_i*50,_j*50-25] nearRoads 20);
    _RSW=count ([_i*50-25,_j*50-25] nearRoads 20);
    _RW=count ([_i*50-25,_j*50] nearRoads 20);
    _RNW=count ([_i*50-25,_j*50+25] nearRoads 20);
    _list=_list+[[[_i*50,_j*50,getTerrainHeightASL [_i*50,_j*50]],[_DN,_DNE,_DE,_DSE,_DS,_DSW,_DW,_DNW],[_RN,_RNE,_RE,_RSE,_RS,_RSW,_RW,_RNW],_Psea,_Pforest,_Phouses]];
    };
    allpositions=allpositions+[_list];
};
hint format ["all position is %1",allpositions];
copyToClipboard (str allpositions);
exit;

对于距离过长时的路点,可以以城镇为中介,在城镇间预设最快通达的公路作为路点用以运输,按公路速度计算;如果是危险地带需要野战,就按上述的方式做慢速运动,这样基本能模拟不同地形和不同行军状态的移动——两种移动状态这一点可以参考Wargame ALB的两种移动。
 楼主| 发表于 2014-2-6 23:45:37 | 显示全部楼层
嗯,反正就是一些想法吧。很期待有兴趣的同志们搞一下,一点一点做出一个宏伟的任务。
发表于 2014-2-7 00:06:18 | 显示全部楼层
鼓掌~~
我记得其实有RPG服的,什么Takistan生活之类的
发表于 2014-2-7 09:26:45 | 显示全部楼层
鼓掌鼓掌~听起来很棒啊
发表于 2014-2-7 10:46:24 来自手机 | 显示全部楼层
多种游戏模式整合,难度够大,不过升级模式有必要吗,除非可保存进度,一场战役下来很耗时间呢
发表于 2014-2-7 14:01:22 | 显示全部楼层
@DDDDDDDDDDD
发表于 2014-2-7 17:39:26 来自手机 | 显示全部楼层
本帖最后由 Leboudin 于 2014-2-7 18:10 编辑

ALIVE可以进行双方交战的虚拟,我理解为就像玩家放置好单位,指定好路点后,由AI自行战斗,ALiVE的好处就是不需要在游戏中实时生成单位,作战是在虚拟进行的,怎么打不需要用户操心。貌似ALiVE可以自动甄别重要地点,自动生成平民和军队,还可以生成路卡~~水平有限请指教~~
 楼主| 发表于 2014-2-7 18:48:23 | 显示全部楼层
qevhytpl 发表于 2014-2-7 10:46
多种游戏模式整合,难度够大,不过升级模式有必要吗,除非可保存进度,一场战役下来很耗时间呢

嗯,怎么保存是个问题,我是想能否在大地图模式(就是没有实兵的模式),保存所有的虚拟部队的信息和玩家信息什么的,应该也还好吧,读取之后大地图继续运转。
 楼主| 发表于 2014-2-7 18:49:12 | 显示全部楼层
Leboudin 发表于 2014-2-7 17:39
ALIVE可以进行双方交战的虚拟,我理解为就像玩家放置好单位,指定好路点后,由AI自行战斗,ALiVE的好处就是 ...

嗯,我还没太玩会ALIVE呢,如果他们那个功能完善那自然最好了。我估计是没什么时间真的编写出这个任务了。
发表于 2014-2-7 22:09:50 | 显示全部楼层
DragonZen 发表于 2014-2-7 18:48
嗯,怎么保存是个问题,我是想能否在大地图模式(就是没有实兵的模式),保存所有的虚拟部队的信息和玩家 ...

武装突袭有模组可以把游戏状态保存到数据库,VTS的早期版本也可以把游戏状态保存到TXT(?)文件。另外记得dayz也是这个原理。
详情请搜索论坛,“数据库”。大概是ffur或fromz提到的。
 楼主| 发表于 2014-2-8 12:35:10 | 显示全部楼层
hiddenzone 发表于 2014-2-7 22:09
武装突袭有模组可以把游戏状态保存到数据库,VTS的早期版本也可以把游戏状态保存到TXT(?)文件。另外记 ...

哦,好滴,非常感谢。
发表于 2014-2-16 11:24:55 | 显示全部楼层
DragonZen 发表于 2014-2-7 18:49
嗯,我还没太玩会ALIVE呢,如果他们那个功能完善那自然最好了。我估计是没什么时间真的编写出这个任务了 ...

还是很期待带你的任务
您需要登录后才可以回帖 登录 | 加入VME

本版积分规则

小黑屋|中国虚拟军事网

GMT+8, 2024-4-28 13:54

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表