<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6906980428605358797</id><updated>2012-02-16T05:21:45.661-08:00</updated><category term='game development'/><category term='game industry'/><title type='text'>codefighter</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://codefighter.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6906980428605358797/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://codefighter.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>R2D2</name><uri>http://www.blogger.com/profile/17203930024697324180</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6906980428605358797.post-3648027788673134347</id><published>2010-09-23T13:29:00.000-07:00</published><updated>2011-07-26T16:14:36.570-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game development'/><title type='text'>Utility-Based Agent</title><content type='html'>最近連續兩個projects都用到utility-based agent來處理bot的AI&lt;br /&gt;發現AI效率瓶頸都不在short interval的update上&lt;br /&gt;反而都集中在long interval的evaluation&lt;br /&gt;&lt;br /&gt;最近在想 或許可以試asynchronous evaluation,&lt;br /&gt;比較不迫切的behavior或許不需要那麼頻繁的評估&lt;br /&gt;但是換個角度看, 如果在不同時間evaluate所得到的fitness (utility) value是否還具有相同的意義?&lt;br /&gt;拿不同時間得到的utility value做比較的結果 是否能得到相同的most-fit behavior?&lt;br /&gt;&lt;br /&gt;大概還是要測試比較後才知道吧&lt;br /&gt;&lt;br /&gt;[後續]&lt;br /&gt;最近比較閒所以試了一下asynchronous evaluation&lt;br /&gt;結論是不值得這麼做&lt;br /&gt;原因如下&lt;br /&gt;1. Fitness value的可靠性需要一點blind faith 在某些遊戲種類中這是不允許的&lt;br /&gt;2. 需要fallback behavior, 而fallback behavior的eval通常抵銷掉asynch eval帶來的好處&lt;br /&gt;3. 所有behavior都需要加fitness decay或是momentum, 調整 = 頭痛&lt;br /&gt;4a. 使用lockstep network model時需要特別容易desync&lt;br /&gt;4b. Client-server之下AI decision通常不會造成瓶頸, 沒有asynch eval的必要&lt;br /&gt;所以最簡單的做法還是eval cycle中做optimization: sensory data能cache的就盡量cache; 用d^2取代d做距離比較; LoS之類這種比較慢的運算就留到target pool sort完再做, etc&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6906980428605358797-3648027788673134347?l=codefighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codefighter.blogspot.com/feeds/3648027788673134347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://codefighter.blogspot.com/2010/09/utility-based-agent.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6906980428605358797/posts/default/3648027788673134347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6906980428605358797/posts/default/3648027788673134347'/><link rel='alternate' type='text/html' href='http://codefighter.blogspot.com/2010/09/utility-based-agent.html' title='Utility-Based Agent'/><author><name>R2D2</name><uri>http://www.blogger.com/profile/17203930024697324180</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6906980428605358797.post-238326896784370513</id><published>2009-06-01T17:39:00.000-07:00</published><updated>2009-06-05T15:56:47.362-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game development'/><category scheme='http://www.blogger.com/atom/ns#' term='game industry'/><title type='text'>E3 Rants</title><content type='html'>上星期五總算把E3 build 送出去了&lt;br /&gt;老實說以工程師的角度來說我亂討厭E3的&lt;br /&gt;因為E3 build裏面很多東西都是為了展覽臨時寫的&lt;br /&gt;E3過後這些code大概一半都會丟掉&lt;br /&gt;即使留下來的, 通常也不是用best solution寫的, 而是the first solution working而已, 效能和維修性其實都比平常爛&lt;br /&gt;所以development cycle中多了一個E3等於少了一個月的development time&lt;br /&gt;而且還多了不必要的crunch&lt;br /&gt;&lt;br /&gt;每次聽到一些producer在媒體訪問時說什麽他們多辛苦 工作量有多少&lt;br /&gt;幹 不要拿你們的懶叫比我的火雞腿&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6906980428605358797-238326896784370513?l=codefighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codefighter.blogspot.com/feeds/238326896784370513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://codefighter.blogspot.com/2009/06/e3-rant.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6906980428605358797/posts/default/238326896784370513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6906980428605358797/posts/default/238326896784370513'/><link rel='alternate' type='text/html' href='http://codefighter.blogspot.com/2009/06/e3-rant.html' title='E3 Rants'/><author><name>R2D2</name><uri>http://www.blogger.com/profile/17203930024697324180</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6906980428605358797.post-3933553089754059536</id><published>2009-04-29T10:01:00.000-07:00</published><updated>2009-04-29T10:55:26.886-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game development'/><title type='text'>Milestone Postmortem</title><content type='html'>好久沒有update了, 除了自己懶以外當然忙也是原因之一&lt;br /&gt;上個星期為了趕milestone從星期四一直crunch到星期一, 其中有兩天還做到天亮&lt;br /&gt;稍微整理一下和我有關的問題根源, 免得以後再度發生慘劇&lt;br /&gt;&lt;br /&gt;- 這個project cycle原本就超短, 加上這次milestone是1st playable, 要求的delieverable又特別多.&lt;br /&gt;&lt;br /&gt;- 大家都忙著完成各自的task list, 導致快到deadline前才恢復multiplayer playtest, 測試中發現的bug沒有足夠的時間修理.&lt;br /&gt;&lt;br /&gt;- AI programmer(就是我啦)和network programmer間的溝通不夠, 不知道進行中的multiplayer容許新玩家加入並take over一個AI以保持角色總數. 原先的design是遊戲一旦開始就不容許player加入, 所以我的一些clean up code放在AI的destructor裡. 但是新的design會導致遊戲進行中clean up機制被提早啟動.&lt;br /&gt;&lt;br /&gt;- 太晚做framerate optimization, 所以optimization本身沒有經過足夠的測試而造成其它問題. 原本的design是所有的AI每個frame都會收到update, 但是timeslice後update的間隔太長, timescale後超過安全範圍, 例如有些AI轉身因delta time過長而轉太多導致無法轉到設定的角度範圍內, 然後subsequent action就被無限期延後.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6906980428605358797-3933553089754059536?l=codefighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codefighter.blogspot.com/feeds/3933553089754059536/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://codefighter.blogspot.com/2009/04/milestone-postmortem.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6906980428605358797/posts/default/3933553089754059536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6906980428605358797/posts/default/3933553089754059536'/><link rel='alternate' type='text/html' href='http://codefighter.blogspot.com/2009/04/milestone-postmortem.html' title='Milestone Postmortem'/><author><name>R2D2</name><uri>http://www.blogger.com/profile/17203930024697324180</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6906980428605358797.post-8761643684383054184</id><published>2008-06-10T16:30:00.000-07:00</published><updated>2008-12-11T02:49:22.242-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game development'/><title type='text'>Flash UI on Ogre</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cf--F3bR2cE/SE8V3StA8cI/AAAAAAAAAB4/YkfOYcTXQFA/s1600-h/hikari-logo.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_cf--F3bR2cE/SE8V3StA8cI/AAAAAAAAAB4/YkfOYcTXQFA/s400/hikari-logo.png" alt="" id="BLOGGER_PHOTO_ID_5210407333548585410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;用Flash來做game UI大概快變成主流UI處理方式之一﹐連&lt;a href="http://www.ogre3d.org/"&gt;Ogre&lt;/a&gt;上都出現支援Flash的UI &lt;a href="http://www.ogre3d.org/phpBB2/viewtopic.php?t=41999"&gt;Hikari&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;說實在的用flash來做game UI真是一個蠻屌的的構想。幾年前在Game Developer Magazine的postmortem有讀過某公司在他們的自己的engine裡面加了built-in flash control﹐所以他們的designer可以在不需要programmer支援下獨立製作各種動態UI﹐而且當需要改變UI design時(一般情況下UI design改變的頻率差不多等於每天尿尿的次數)不會distract到programmer。可能是Flash的performance overhead方面的顧慮﹐當時這種UI處理方式算是蠻另類的。不過在PC和console都這麼猛的今天﹐犧牲一點點resource給Flash用以避免development時的頭疼我覺得這個代價非常值得。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6906980428605358797-8761643684383054184?l=codefighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codefighter.blogspot.com/feeds/8761643684383054184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://codefighter.blogspot.com/2008/06/flash-ui-on-ogre.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6906980428605358797/posts/default/8761643684383054184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6906980428605358797/posts/default/8761643684383054184'/><link rel='alternate' type='text/html' href='http://codefighter.blogspot.com/2008/06/flash-ui-on-ogre.html' title='Flash UI on Ogre'/><author><name>R2D2</name><uri>http://www.blogger.com/profile/17203930024697324180</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cf--F3bR2cE/SE8V3StA8cI/AAAAAAAAAB4/YkfOYcTXQFA/s72-c/hikari-logo.png' height='72' width='72'/><thr:total>10</thr:total></entry></feed>
