研發週報:神奇! 1KB JavaScript代碼編寫的3D蜜蜂 發表于2013-03-29 13:43| 次閱讀| 來源CSDN| 0 條評論| 作者張紅月 研發週報JavaScriptPatrick Wyatt遊戲開發協力廠商應用開放平臺開源Polycode 摘要:忙碌的一周總算過去,閒暇時不妨來細細品味我們精心為你呈現的這份技術大餐。 本期熱點:神奇! 1KB JavaScript代碼編寫的3D蜜蜂;魔獸之父專訪:今年遊戲產業會出現一場革命;回顧:那些被平臺方封殺的協力廠商應用。
我們挑選了本周研發頻道的精華文章,推薦給您的絕對「有料」,閒暇時不妨來細細品味我們精心為你呈現的這份技術大餐,或許有您意想不到的收穫。 本期熱點:神奇! 1KB JavaScript代碼編寫的3D蜜蜂;魔獸之父專訪:今年遊戲產業會出現一場革命;回顧:那些被平臺方封殺的協力廠商應用。
本期熱點重播:
1.神奇! 1KB JavaScript代碼編寫的3D蜜蜂
相信很多網友都還記得去年CSDN報導過同樣是1KB JavaScript代碼所編寫的 3D玫瑰,或者2010年的 3D聖誕樹。 細心的網友可能注意到了,這兩個神奇的作品都是以為西班牙開發者 Román Cortés在JS1K大賽上的投稿作品,今年他又帶來了同樣神奇的3D蜜蜂——長著觸角、系著領帶。
左、右分別是做過動作模糊化處理前、後的樣子
由於 JS1K規則限制,該作品僅支援Firefox 18、Chrome 24以及Opera 12、13。 如果你已安裝以上瀏覽器,可以選擇觀看 線上演示。
該作品的實現使用到了很多演算法和渲染技術,作者在自己的 博客上詳細地 解釋了其技術原理。 原始程式碼如下(經過壓縮):
_="G=[V,j=WV,-j]];jX=83,(+3+KD37Uji&32?70:,-80Y2]b=a[j]=c.cloneNode(LEb.getCoNtext('2d'bAb;x=8# 8-x,6+x(j <17X7;<xeH@x*@x*y,.07$OsetIntervalcLE5;a e#73D-=7$7<ZaH0#-i$Q,-8Oj++; ZE8Q/((i+)%3095W0-e*5,6-e#*5#OG.sortreturn -eV]}OG.map=L^)/-[,=+]V];y=^X^)(X/6)+;x=0Y8Q;~~F2]W-@x-~F4]/1*^5+/F3 ]-@yL;! F2]&&Z_beginPath(_moJa(_bezierCurJ))})},j=4OjLj?cA1Q:9Q;z=x=*yZj| (z+1)%.5<.1&&(z*(191+(E527368,xB9+Ui3*e,(59525-y*(5188+(+(280*,yB8-(j&2]j|| abs(E8-i%)<54-D&&YD2e4#+e*/|[ 1$4$,,$,8$][~~(D48+e/3)W90+D8,i])cos(>>j*4&15)sin(i(function(b#){F0])*--;)F1] StylE'hsla('+[for(`,j+y ,Math.iG.push([),_drawImage(a[270+'%',.fill(j&15K(y=))/8`/2,y501660j/.height=1]+')',i(.5+.5#,e$,1@30+ A.width=B*(10*Di/Ee=Fb[HRect(JveTo(Yi*Li=O); Qe3UPI*V[0W],X+Y-KZi^_a.`+x+";for(Y=0;$="`_^ZYXWVUQOLKJHFEDBA@$# "[Y++];)with(_.split($))_=join(pop());eval(_) 相關作品:
情人節的3D玫瑰 耶誕節的3D聖誕樹
更新:
之前的版本在最新版Chrome和Firefox Nightly中存在無法顯示翅膀的bug,已修復,線上演示位址並沒有改變。 有網友提到另一個JS1K作品——Strange crystals(無盡的隧道)也非常神奇,3D蜜蜂的作者Román Cortés已將兩者合而為一,並且仍然小於1KB。 應網友要求,筆者已將「3D蜜蜂」原始程式碼以及「隧道裡的3D蜜蜂」原始程式碼打包上傳,可以點擊這裡下載。
2.魔獸之父專訪:今年遊戲產業會出現一場革命
通過一次偶然的機會,krisviceral.com博主對魔獸之父Patrick Wyatt(Pat)進行了專訪。 在採訪中Pat表示,相比與Warcraft和StarCraft,他更為Guild War感到驕傲,因為這款遊戲的開發並沒有像前兩者那樣拼命加班,而且也成功地鍛煉了很多新人開發者。
Patrick Wyatt(Pat)曾任Blizzard開發&搜索副總裁,參與過Warcraft、StarCraft、Diablo、battle.net、Guild Wars等產品的開發, CSDN之前也對他所寫的Warcraft、StarCraft開發歷程相關博文進行了 編譯、報導。 本文譯自krisviceral.com博主Kviceral對Pat的專訪,Pat對遊戲、AI、軟體發展等方面都發表了自己的觀點。
魔獸之父Patrick Wyatt
你曾參與過很多廣受好評的遊戲開發工作,其中最令你驕傲的是哪款?
Pat:這是一個很難回答的問題,因為每個遊戲都傾注了我的心血。 真的要算起來應該是Guild War,這是我們以小團隊努力的成功。
我們從Blizzard離職後創立了一個新公司(ArenaNet),從零開始打造出了這款極具創新的遊戲,甚至沒有拼命地去加班工作,但是最終我們成功了。
在ArenaNet,我們招聘了很多剛畢業的學生,所以他們中很多人並不知道Guild War的開發流程與「傳統」遊戲開發有多少不同,但我很高興他們沒有和行業中大多數人一樣常年crunching。
Guild War剛開發出來時,我們是唯一一個放棄訂閱模式(通過支付每月的訂閱費無限玩遊戲)的商業MMORPG(大型多人線上角色扮演遊戲),你在購買了這款遊戲之後就可以無限制地玩。
在過去2-3年裡,你最喜歡的遊戲是什麼?
Pat:我很享受DayZ這款僵屍題材的生存遊戲,我也很驚訝自己竟會喜歡這款遊戲,在地面上匍匐前進10分鐘聽起來可沒什麼意思,但是這款遊戲的背景會讓你為此著迷! 我偶爾也玩League of Legends,同樣很喜歡Kindom Rush(iPhone/iPad)這款深受Warcraft和StarCraft影響的塔防遊戲,我和我的孩子都很愛玩。 最近我還發現了AirMech,都是不錯的遊戲。
你認為過去5年裡遊戲界最大的創新是什麼?
毫無疑問是「免費遊戲」這種商業模式在西方市場的巨大成功——它改變了遊戲的開發方式。 設計師需要更致力於創造迷人的體驗,以保持對使用者的長期粘性;但負面的影響在於,有的設計師把他們的創造力用在了讓使用者沉迷于遊戲或者是其它「黑暗技巧」,而非增加遊戲的趣味性。 我希望使用「心理操縱」等「黑暗技巧」的遊戲會越來越少。
另外一處在於移動遊戲。 創造有趣但是低成本的遊戲非常值得讚賞! 最近,我發現自己玩移動遊戲的時間要遠高於PC/主機遊戲。 相信隨著遊戲設計師更精于利用行動裝置小螢幕的優勢,能為我們帶來更多優秀的作品。 >>查看原文
3.回顧:那些被平臺方封殺的協力廠商應用
一款應用從萌芽狀態到最後真正的上線,期間要經歷種種磨難,好不容易推出了,然而還要遭到平臺方的百般刁難。 倘若你的應用不符合平臺方的開發者協定,那麼將會遭到封殺。 那麼之前所做的努力豈不功虧一簣? 本文例舉了部分被平臺方封殺應用的典型案例,僅供參考。
NO.1 Adblock瀏覽器外掛程式遭谷歌封殺
事件重播:2013年3月,谷歌把一款非常流行的應用Adblock Plus從它的應用商店Google Play裡刪除了,遭此毒手的還有其它幾個跟遮罩廣告相關的應用。
官方理由:Adblock應用違反了「開發者部署協定」裡 4.4 節的內容:「使用未經批准的方式妨礙使用者對其它服務或產品的訪問」。
開發者申訴:Adblock Plus的創始人Till Faida稱:「我們知道廣告收入對谷歌來說十分重要,但Adblock Plus並不是自動遮罩所有的廣告;而是讓使用者自由選擇遮罩還是不遮罩」。
評論:谷歌是通告廣告掙錢的,而Adblock Plus外掛程式可遮罩廣告。 坦率地說,谷歌拖到現在才對這樣的應用下手才是讓人意外的地方。
NO.2 Vintage Camera遭到Facebook扼殺 NO.3 協力廠商圖片託管服務Twitpic、yfrog遭Twitter刪除 NO.4 協力廠商支付遭Google Play封殺 NO.5 Dropbox SDK應 用被蘋果下架 NO.6 Fawave、微博通等新浪微博協力廠商應用遭封殺 NO.7 Emoti for Facebook被Facebook莫名刪除
如同一位網友所說:沒有真正的開放,也沒有真正的公平競爭。 平臺方永遠擁有一票否決權。 那麼,開發者如何才能在舉步維艱中繼續前行,絕處逢生呢? 怎樣才能避免遭到平臺方的「不待見」呢?
筆者認為,平臺方與開發者發生「摩擦」無非是侵權或是分紅不均導致的。 究竟該如何畫這條「紅線」,淘寶VP王文彬的回答很有代表性,此前他在接受 CSDN記者專訪談到如何看待平臺方跟開發者逐利的問題表示:定義哪些是官方基礎工具,哪些是協力廠商工具,很難畫出一條明顯的界限,會有一些模糊地帶。 有一點需要強調,淘寶不會為了跟開發者爭奪利潤去剷除協力廠商應用。 淘寶更關心的是平臺上使用者資料的安全性和隱私能否得到保障,使用者體驗能否提高,淘寶希望看到平臺上的協力廠商廠商做大做強。
4.飛信正面迎戰微信,使用者能否買帳?
一份意外洩露的中移動內部PPT不僅攪皺了通信和互聯網行業的一池春水,也攪亂了相關公司的心。 中國移動欲重構飛信正面迎接微信,發改委稱要對微信進行收費,那麼使用者能買帳嗎?
飛信是中國移動于2007年5月推出的一款綜合通訊服務,即融合語音(IVR)、GPRS、短信等多種通信方式,覆蓋三種不同形態(完全即時的語音服務、准即時的文字和小資料量通訊服務、非即時的通訊服務)的客戶通信需求, 實現互聯網和移動網間的無縫通訊服務。
微信是騰訊公司于2011年1月21日推出的一款通過網路快速發送語音短信、視頻、圖片和文字,支援多人群聊的手機聊天軟體。 使用者可以通過微信與好友進行形式上更加豐富的類似于短信、彩信等方式的聯繫。 微信軟體本身完全免費,使用任何功能都不會收取費用,微信時產生的上網流量費由網路運營商收取。 微信是一種更快速的即時通訊工具,與傳統的短信溝通方式相比,更靈活、智慧,且節省資費。
2007年中國移動推出的聊天工具,至今已有6年光景的飛信軟體,因與短信業務連通而廣受關注,但目前處境並不樂觀。 據統計,如今飛信的使用者量還不到騰訊QQ的五分之一,月均使用時間不足後者的四十五分之一。 更讓飛信感到恐懼的是,在2012中國互聯網大會上,騰訊CEO馬化騰在微博中宣佈,微信使用者人數已高達2億,截至2013年01月註冊使用者量已經突破3億。 這個誕生僅2年多的手機聊天軟體,發展如此迅猛,使業內人士頗為震驚。
微信因其操作簡便,能廣交好友,成為年輕人的交友工具。 最初微信以文字通訊、手機圖片分享為賣點,在後期開發過程中以發現「查看附近的人」和「搖一搖」功能更受使用者歡迎。 微信日新增使用者以數十萬數量級增長,確立了它在移動APP市場的絕對優勢地位。
5.Web框架排行榜 Netty、Servlet和Vert.x位列前三
一個框架對網站性能會產生多大影響呢? 答案或許會讓你大吃一驚。 本文資料由自稱CTO外包公司的 TechEmpower測試所得:
框架排行榜:
令人驚訝地是,排在前三的是Netty、Vert.x和JAVA Servelet。 那麼它們比Ruby、Django到底快多少呢? 一開始我們猜測可能會4倍差異,但在Vert.x和Rubyon Rails之間竟相差40倍,真讓人瞠目結舌。
在此次測試中,我們根據精確的文檔和社區意見進行配置和部署,盡可能按照真實的生產運行環境來配置和部署。 關於每個框架的測試環境是如何搭建和測試的,我們都進行了詳細的描述,大家可以點擊查看每個框架的測試詳情。
開源系列:
6.騰訊開源基於HTML5技術的專業級影像處理引擎 AlloyImage
騰訊Web前端 AlloyTeam又推出了最新的開源專案,一個基於HTML5技術的專業級影像處理引擎—— AlloyImage(簡稱AI)以及一個線上Web影像處理平臺—— AlloyPhoto(簡稱AP)。 這預示著騰訊的Web前端團隊將在底層基礎技術層面做深入研究,並將更多的為業界提供基礎技術服務,同時也將與HTML5夢工廠一起推動HTML5技術在業界的廣泛深入的應用。
AlloyImage是一個使用JAVAscript語言開發的,基於Web的線上影像處理引擎,除了核心底層影像處理引擎,還同時集成了一些方便快捷的影像處理API,您可以將它簡單快捷的引用到您的Web網頁中, 做出與PhotoShop一樣的優美效果。 甚至,你可以用AlloyImage來開發一個Web線上影像處理軟體,如:Web版的PhotoShop—— AlloyPhoto。
AlloyPhoto簡約版主介面
AlloyImage主要使用HTML5的canvas技術,並在多圖層(layer)處理方面做了創新性的嘗試,不僅如此,在技術實現層面,其架構方便擴展,消費者可以很容易寫出現一個AlloyImage的濾鏡外掛程式, 很多API支援重載,參數傳遞靈活。
目前,AlloyPhoto有 簡約版和 專業版兩個版本,其 源碼託管在GitHub上。 後續AlloyImage將會持續更新,將更多的處理效果與工具加入到其中,並且會在性能方面做出一些優化與嘗試,AlloyImage將力求做一個開放、開源的強大的JS圖像庫。
7.Polycode:免費、開源的跨平臺(遊戲和APP)開發工具
Polycode是一款免費、開源的跨平臺遊戲和APP開發工具,遵循MIT協定,其核心採用C++編寫,支援Mac OS、Windows、Linux,即將支援iOS和Android。
開發者可以把Ploycode當做C++庫,也可以在其IDE裡編寫Lua腳本。 Ploycode API的設計理念是「用更少的代碼做更多的工作」。 它使用scenegraph管理系統執行渲染和更新操作,也可以自訂渲染和更新。
在IDE裡編寫的代碼可以直接發佈到所支援的平臺上,如果只是編寫Lua腳本,那麼IDE會自動創建「ployapp」應用程式格式,其中包含了所有的代碼和資源,並且把它們封裝到一個特定平台層上。
在GitHub上託管地址: HTTPs://github.com/ivansafrin/Polycode
此外,類似的C++跨平臺開源遊戲引擎和開發工具有: Moai:其主要面向PC、手機、及基於雲端的遊戲開發; Cocos2d-x:跨平臺的開源移動2D遊戲框架,易學易用; Cinder、 Unity3D以及 GarageGames開源的Torque 3D遊戲引擎。
8.Linux容器運行時Docker開源
Docker是一個雲計算平臺,它利用Linux的LXC、AUFU、Go語言、cgroup實現了資源的獨立,可以很輕鬆的實現檔、資源、網路等隔離,其最終的目標是實現類似PaaS平臺的應用隔離。
值得關注的特性:
檔案系統隔離:每個進程容器運行在一個完全獨立的根檔案系統裡。 資源隔離:系統資源,像CPU和記憶體等可以分配到不同的容器中,使用cgroup。 網路隔離:每個進程容器運行在自己的網路空間,虛擬介面和IP位址。 日誌:收集和記錄標準流(stdout/stderr/stdin)裡的每個進程容器,用於即時和批量檢索。 變更管理:被修改的容器檔案系統會被提交到一個新的image,留著重用來創造更多的容器,無需範本或手動設定。 互動式shell前往官網查看更多詳細介紹:HTTP://docker.io/
源碼託管地址:HTTPs://github.com/dotcloud/docker/
往期回顧:
研發週報:王淮給技術創業團隊的十點建議