").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0
「Hearts of Iron 4」開発日記#33
HoI4 開発日記
2015.11.14

「Hearts of Iron 4」開発日記#33が公開されていましたので、その内容をご紹介。
前回:開発日記#32
2015/11/21 #34へのリンクを追加。
概要
開発日記#33は、補給システムについて。
補給システム全体について
- HoI3の補給システムには、多くの問題があった。どのように動いているのか、プレイヤーは補給の問題をどのように解決すればいいかがわかりにくかった。私たちは、誰も使わない補給についてのアーケードモードを作りさえした。
- そして、以下の点が解決されるべきだという考えが浮かんだ。
- そのエリアでどれだけの軍隊が問題なく活動できているかを、いかなるポイントでも確認できなければならない。これは上陸作戦でも同じだ。
- 補給線のボトルネックを正確に確認できなければならないし、プレイヤーにこれを明確に解決するアクションを与えなければならない。
- 補給システムそれ自体は、原因やその影響が明らかでないような、長く複雑なフローネットワークを持ってはならない。
- 補給システムは、首都が取られても崩壊してはならない。これはHoI3での大きな問題で、リアルでもないし面白くもなかった。
- 都市での抵抗は、プレイヤーの軍隊から切り離された後でも可能であるべきだ。
- レジスタンスは、もぐらたたきにはならずに補給線を傷つけることができなければならない。
- 補給の問題は、HoI3のように問題なしかまったく止まってしまったかのように感じるものではなく、徐々に悪化していく必要がある。
- 恐ろしいリストだが、我々はこれをすべて解決できたと思っている。そうすると、これはどのように動くだろう?
- 世界はプロヴィンスからなる補給エリアに区分される。これは純粋にゲームプレイのためのものであり、地形によって決まる。
- エリアごとに、一見してどれだけの師団が支援を受け、物資を使っているかがわかる。
- エリアにカーソルを合わせると、補給線が矢印で表示され、なにによって制限されているかも見ることができる。エリアには、その問題を解決するためのクイックボタンもついている(海軍基地の拡張やインフラ整備など)。
- 補給問題が起こると、ゲームがアラートを出すようにした(イギリスのようにいくつもの戦域を抱える国でのプレイではめちゃくちゃ役に立つ)。
補給エリアについて
- そのエリアの補給レベルは、以下の要素によって決まる。
- そのエリアのスクリプトされている価値。破壊されないインフラのようなものだ(山や砂漠では基本的にゼロ、人口の多いヨーロッパでは極めて高い)。
- 大きな都市や勝利点があるところでは高い。したがって、ここで抵抗することも可能だ。
- 占領地域におけるレジスタンスの活動(これについては、別の開発日記で詳しく取り上げる予定だ)。
- 隣接エリアからの補給の流入。首都まで遡るか、首都と切り離されている場合には次に補給状況のよいエリアを見る。補給はそのエリアも含むルート上でもっともインフラの低い(またはレジスタンスのサボタージュがある)エリアによって制限される。そのため、プレイヤーはどこがボトルネックかを気にする必要がある。これが前線でどれだけの軍隊が活動できるかに影響するからだ。また、補給状況がいいエリアと悪いエリアの間で余った物資を融通することもある(鉄道がストップしてもトラックや馬で輸送することをシミュレートしている)。
- 本国から切り離された場合、例えばアフリカや島で戦っている場合は、補給物資はコンボイによって海を渡り、港のサイズによる制限を受ける。コンボイが沈められず、港を使い続けられるということは、海外での軍の活動にとって重要なことだ。
- 輸送機によって補給物資を投下するミッションも可能だ。切り離された軍隊への補給に役立つ(開発中なのでまだ見せられない)。
- そこで戦っている場合には、補給エリアの大きさが変わるということを知っておくほうがよい。実際の補給水準はコントロールしている数(注:補給エリア内のプロヴィンスの数か?)に依存する。
補給状況の改善について
- 補給を受けていないユニットは、短期間のうちに補給物資を使い果たしてしまう。その後は30日ほどで徐々に状況が悪化していく。補給を受けていないと、組織率が下がり、移動が遅くなり、効果的に戦えなくなり、損耗がひどくなる。HoIのベテランプレイヤーは、敵を打ち負かす一番いい方法が敵の補給を断ち、敵を包囲して撃破することだと知っている。これはHoI4でも変わらない真実だ。
- プレイヤーが補給状況を改善するにはどうすればいいか。まずボトルネックを見つけよう。
- インフラを改善すれば、より多くの補給物資を搬入できる。
- 海に接続している場合は、コンボイを護衛して船団攻撃から守ろう。
- 海軍基地を大きくすれば、スループットが改善する。
- レジスタンスと取引しよう。
- 補給中隊を研究して師団テンプレートに追加しよう。
- 航空輸送を行おう。
- その地域から撤退しよう。
補給についての考え方
- 補給物資とはなにか? HoI3では生産して備蓄していたもののことだが、HoI4ではユニットに到達するフローネットワークに送り込むもののことを指す。備蓄できるのは、装備だけとなる。
- 悪天候や、特に補給状況が悪いところで移動・訓練・戦闘・待機すると、装備が壊れ、輸送してこなければならなくなる。劣悪な補給状況では、装備が補充されるまでが長引き、またそれまでの損耗も増えることになる。
- したがって、HoI3での抽象的な「補給物資」は、HoI4でフォーカスされている装備の補充に置き換わったことを意味する。また、ゲーム中で燃料のように別に要求されるものがなくなり、置き換えられる装備の生産時点で石油が必要となるようにした(戦車やトラックなど)。
- 燃料を備蓄できるということは、他のすべての備蓄できるものと同じ問題を引き起こす。そのため、生産時点でユニットが必要とするものを一緒にしてしまうことにして、プレイヤーをすべての移動にまつわるマイクロマネジメントから解放した。またこれによって、航空機の基地移動で燃料が無駄にならないようになり、戦略的な石油資源へのアクセスと、ユニットに対しては置き換える装備と補給線を考えることにフォーカスした。
補給についてのバランス取りはまだ終わっておらず、スクリーンショットの数値は多すぎる値になっているとのこと。
来週は、内戦とクーデターについて。
次回:開発日記#34
タイトルとURLをコピーしました
コメント