
一、RTS游戲中的避障算法
RTS游戲中的避障算法
RTS游戲中采用的避障算法為Optimal Reciprocal Collision Avoidance,簡稱ORCA。
一、ORCA算法的背景
在一般游戲中,尋路和單位之間的物理碰撞可以解決大多數(shù)問題。但在RTS游戲中,尤其是單位數(shù)量特別多的時候,僅依靠尋路和物理引擎會讓所有單位的移動看起來雜亂無章,且互相影響。尋路算法還存在一個問題,即友軍是否應(yīng)被視為尋路過程中的阻擋。在一些典型的RTS游戲中,如《魔獸爭霸3》,單位在尋路過程中是不會將友軍視為地形阻擋的,只有在移動過程中發(fā)現(xiàn)當(dāng)前位置被友軍阻擋時,才會觸發(fā)一次將友軍視為阻擋的重新尋路。這些經(jīng)典的RTS游戲通過一些小技巧讓尋路看起來更加自然。
在我們的RTS游戲中,沒有使用物理引擎,而是直接用尋路和ORCA來控制單位移動。這主要有兩個原因:一是自研引擎暫時沒有接入物理引擎;二是沒有物理引擎,但直接使用ORCA看起來效果也不錯,且性能消耗較低。
二、底層避障算法概述
經(jīng)典的底層避障算法有三種:VO(Velocity Obstacle)、RVO(Reciprocal Velocity Obstacle)和ORCA。
VO:最經(jīng)典的底層避障算法,但存在抖動等問題。RVO:在VO的基礎(chǔ)上進(jìn)行了一些改進(jìn),解決了VO抖動的問題。ORCA:基于VO,但更加實(shí)用。它考慮了速度的大小,使得篩選粒度更細(xì),不像VO和RVO只考慮速度方向。ORCA的求解過程基本只用到了線性規(guī)劃,比較高效,不像VO和RVO有大量的非線性求解。三、ORCA算法介紹
ORCA實(shí)際上是在RVO的基礎(chǔ)上做了一步升級,也可稱之為RVO2。它通過引入一個時間窗口,將相對位置轉(zhuǎn)化成了速度,這樣計(jì)算最優(yōu)速度的時候就都在同一個速度坐標(biāo)系中了。ORCA在計(jì)算最優(yōu)解的時候,需要保證計(jì)算出來的速度對雙方都是最優(yōu)解,最終計(jì)算出來的速度可以用一個線性空間表示。針對每一個鄰居都有一個這樣的線性空間,最終對所有線性空間用線性規(guī)劃求出最優(yōu)解,這里可以選擇是速度大小優(yōu)先或速度方向優(yōu)先。
還有一種無解的情況。在這種情況下,ORCA計(jì)算的最終速度并不是0,而是根據(jù)鄰居的速度空間計(jì)算一個最小影響鄰居最優(yōu)解的速度,表現(xiàn)出來的就是隨鄰居移動。
四、ORCA算法的使用及優(yōu)化
在運(yùn)用ORCA到游戲的過程中,有四個問題需要重點(diǎn)解決:
ORCA的輸入?yún)?shù)需要針對游戲進(jìn)行調(diào)整:
neighborDist:在尋找周圍鄰居的搜索距離,設(shè)置過大會讓單位在很遠(yuǎn)距離時做出避障行為。
maxNeighbors:尋找周圍鄰居的最大數(shù)目,設(shè)置越大最終計(jì)算的速度越精確,但會加大計(jì)算量。
timeHorizon:代表計(jì)算動態(tài)的物體時的時間窗口。
timeHorizonObst:代表計(jì)算靜態(tài)的物體時的時間窗口,如在RTS游戲中,小兵向城墻移動時沒必要做出避障,這個值需要設(shè)置得很小。
radius:代表計(jì)算ORCA時的小球半徑,不一定與小球?qū)嶋H顯示的半徑一樣,偏小有利于小球移動順暢。
maxSpeed:小球最大速度值。
velocity:小球初始速度。
原版ORCA在解決大規(guī)模單位避障時,在行軍和整隊(duì)時不夠流暢:
解決方案:融合固定半徑和動態(tài)半徑兩種方案。同隊(duì)小兵在計(jì)算ORCA時保證半徑固定,不同隊(duì)的小兵在計(jì)算過程中縮小各自的半徑。小兵在計(jì)算ORCA時,不考慮不同陣營的小兵位置和速度。
原版ORCA對所有單位一視同仁,沒有考慮有些單位需要強(qiáng)制穿插移動:
解決方案:引入質(zhì)量概念。質(zhì)量大的物體在使用ORCA計(jì)算速度時,自己的優(yōu)先速度趨向于輸入的優(yōu)先速度,鄰居的優(yōu)先速度趨向于原始速度。
抖動問題:
解決方案:體型大的物體在轉(zhuǎn)向時不能直接轉(zhuǎn)向,而是增加一個轉(zhuǎn)向插值,使表現(xiàn)過程相對平滑。體型小的物體抖動無法有效避免,但因其數(shù)量眾多、體型小,頻繁抖動對體驗(yàn)影響不大。
五、總結(jié)
ORCA算法在RTS游戲中的避障問題中表現(xiàn)出色,通過調(diào)整輸入?yún)?shù)、優(yōu)化大規(guī)模單位避障、引入質(zhì)量概念和緩解抖動問題等措施,可以進(jìn)一步提升游戲體驗(yàn)和性能。
二、貓司機(jī)游戲攻略
“貓司機(jī)”類游戲的核心攻略包括資源管理、操作技巧、車庫解鎖及隱藏彩蛋探索,具體如下:
一、資源管理與基礎(chǔ)操作在《長途旅行:小貓巴士之旅》中,資源管理是生存關(guān)鍵。玩家需實(shí)時監(jiān)控油量、子彈等物資,例如通過破壞場景中的箱子獲取額外資源,但需權(quán)衡破壞成本與收益。操作方面,左鍵射擊用于清除障礙,右鍵互動可開啟機(jī)關(guān)或拾取道具,滾輪切換道具能快速應(yīng)對突發(fā)情況。需注意游戲幀數(shù)變化可能影響操作精度,低幀率環(huán)境下建議簡化動作以降低失誤率。
二、車庫功能解鎖與下載部分版本(如《我是貓》車庫版)需通過特定流程解鎖車庫。車庫功能支持無限小魚干模式,可自由改裝車輛性能。下載時需從官方或可信平臺獲取資源,避免惡意軟件。參考視頻教程可快速完成安裝,部分版本需完成前置任務(wù)(如通關(guān)特定關(guān)卡)才能激活車庫。
三、出租車駕駛技巧避障與飛行控制:
避開窗臺、氣球等動態(tài)障礙物,飛行高度超過安全閾值會導(dǎo)致車輛失控。
加速飛躍窗臺可縮短路徑,但需預(yù)判落點(diǎn);利用紫色氣球泡泡可獲得短暫碰撞保護(hù),提升生存率。
乘客接送策略:
乘客可能在非站臺位置招手,但直接前往站臺接送更安全,頻繁偏離路線易導(dǎo)致墜毀。
平衡效率與風(fēng)險,優(yōu)先完成低風(fēng)險訂單以積累資源。
資源收集與利用:
藍(lán)氣球用途尚未明確,但紫色氣球是核心生存道具。
賺取20元后可在商店購買加速、護(hù)盾等道具,建議優(yōu)先升級護(hù)盾以減少墜毀損失。
四、隱藏彩蛋探索通過自由視角模式(部分版本需解鎖)可發(fā)現(xiàn)隱秘彩蛋,例如磁懸浮汽車、神秘農(nóng)場等。彩蛋位置通常位于地圖邊緣或特殊地形,探索時需耐心調(diào)整視角。發(fā)現(xiàn)彩蛋后可解鎖特殊成就或獎勵,增加游戲趣味性。
掌握資源分配、操作細(xì)節(jié)及彩蛋機(jī)制是通關(guān)關(guān)鍵。建議新手優(yōu)先熟悉基礎(chǔ)操作,再逐步挑戰(zhàn)高難度任務(wù)。
三、穿過障礙去拍球
幼兒園籃球活動是計(jì)劃,有目的、有組織的通過游戲形式教授幼兒拍球的基本動作。在掌握基本動作的增強(qiáng)幼兒體質(zhì)以及促進(jìn)幼兒良好個性品質(zhì)與社會住友展的教學(xué)活動。
我們在小班的時候會將拍球作為一項(xiàng)特色活動融合在幼兒的戶外活動中。每個幼兒都會練習(xí)單手雙手拍球,甚至是行進(jìn)拍球。到了中班,我們在原定的基礎(chǔ)之上加大了難度增加了花樣。創(chuàng)設(shè)情境融合了障礙拍球、平衡木拍球、定點(diǎn)投籃、旋轉(zhuǎn)拍球等多種動作技巧。這其中就要運(yùn)用到多種多樣的器械材料。
說道器械的使用,首先想到的不是成品的木板、梯子,而是水桶、輪胎。這些物品不是常規(guī)意義上的戶外器械,但是卻發(fā)揮著很重要的意義。孩子們可以根據(jù)自己的喜好以及自己拍球技術(shù)的強(qiáng)弱,自己創(chuàng)設(shè)賽道,通過不斷的嘗試,調(diào)整賽道的寬度,障礙之間的縫隙,并且在老師們的指導(dǎo)下不斷地加大難度。我們班的碩碩簡直就是一名“籃球小將”。在我們第一次接觸籃球障礙賽的時候,幾個小朋友圍著這些水桶繞來繞去,很有默契的開始了競走比賽。看起來,他們知道這些水桶就是些“障礙”我們需要躲避它們。“我們每一個人都拿上一個籃球”!說完每一個小朋友手上都抱了一個大籃球,“我們今天進(jìn)行的拍球障礙賽!就是在拍球的同時還要躲避這些彩色的水桶,不能碰到它們”,說完我就示范了一遍正確的姿勢。哇!動作很簡單嘛,規(guī)則也不難,孩子們一聽紛紛表示自己一定沒問題,甚至有的小朋友已經(jīng)開始在地上拍了拍球,試一試自己的球是不是有氣,免得在比賽中給自己掉鏈子。既然都這么有自信,那咱們就試一試吧。可是誰知道,剛一開始,就出現(xiàn)了小狀況,拍球可簡單,連續(xù)拍球不在話下,行進(jìn)連續(xù)拍球也還可以,這連帶上拐彎加避障還要邊走邊拍,難度就大了。“你們不能拍得太高”!一個細(xì)細(xì)的聲音在我耳邊說道。原來是碩碩,這小家伙可是我們班的“籃球小將”,說完他就拍給小朋友們看,“就是矮一點(diǎn)。”這位小老師說的還真沒錯呢,如果球拍的太高,那么它落下來的速度會跟不上我們往前走的速度,我們過障礙的時候要彎腰輕拍,讓球高頻率的動起來,腳的動作跟著球落下來的速度走。顯然孩子們對這項(xiàng)活動產(chǎn)生了“好勝心”,一遍一遍的從頭開始練習(xí),碩碩也不厭其煩的一遍一遍給大家示范。慢慢地,小朋友們都掌握了這項(xiàng)技能。孩子們都很喜歡花樣拍球,這可是他們在中班學(xué)會的新本領(lǐng)呢!
籃球活動不僅僅戶外體育的重要內(nèi)容,對孩子有規(guī)范良好的教育作用,能積極促進(jìn)幼兒健康陽光成長。使他們不但學(xué)會花樣拍球的技能還鍛煉了身體,提高身體素質(zhì),提高運(yùn)動體能,同時也充分享受籃球運(yùn)動帶來的快樂。












