2010-11-22 56 views
2

我有一款運行良好的遊戲(大約30fps),但是當我嘗試實施廣告時,fps卻一片混亂。我嘗試了Greystripe和iAds,但結果相同(iAds可能更糟糕)。平均fps幾乎相同,但總是有巨大的峯值(每秒1-2次尖峯),遊戲無法播放。iPhone Opengl遊戲與廣告== FPS的問題?

我想這是因爲廣告是在另一種觀點。我在某處讀到,在iphone上的opengl應用程序不喜歡與他們有另一種意見,但有很多遊戲與應用程序商店的廣告。他們是如何做到的呢?

我的實現應該沒問題。我做了所有的文件和樣品告訴了我。我在應用程序窗口中將我的opengl視圖和廣告視圖視爲子視圖,adview位於opengl視圖的前面,因此覆蓋了它的一部分。這可能是問題嗎?將opengl視圖縮小到左側廣告空間讓它們不重疊會更好嗎?你有什麼其他想法可能是錯誤的?

+0

當您使用儀器(時間分析器,OpenGL ES等)進行測試時,當廣告開始放慢速度時,您會在哪裏看到熱點? – 2010-11-22 23:04:52

回答

1

Lope,我用一個單獨的「AdManager」類創建了一個要點at this link,我使用cocos2d編寫了這個類來處理iAds。當然,Cocos2d位於OpenGL的頂層,我發現即使對於相對複雜的遊戲,此代碼也不會影響FPS。

您必須對此進行修改以適應您的應用程序,更改cocos2d調用等,但這會讓您異步加載iAds,這應該有助於解決FPS問題。

要使用這個類,包括它的頭,並呼籲

[[AdManager sharedManager] attachAdToView:self.view]; 

,無論你需要的網絡成癮者。在廣告加載之前,廣告將保持隱藏狀態,屆時他們會在屏幕頂部彈出。 (該類適用於iOS 4.0,4.1和4.2)。

此外,我應該補充說我有一個名爲「Cocos2DController」的整體UIViewController運行的cocos2d。當我將廣告附加到cocos2d視圖時,我正在使用

[[AdManager sharedManager] attachAdToView:[[CCDirector sharedDirector] openGLView]]; 

祝你好運!

0

我們可以在蘋果的選擇中碰到並錯過,但要堅定不移地執行,並在其他部分實施廣告以吸引人,而不是侵入性。這對於幀速率和對你來說會更好。

+0

這是我想做的事情,但不幸的是不能。截止日期,短視的管理和類似的東西:( – Lope 2010-11-22 21:33:19

+0

所以這不是一個技術問題,然後解決這個問題很麻煩,也不可靠,試試人性化的方式,說出來,相信我,這是最好的。 – Alfredo 2010-11-23 06:47:08

0

嘗試在單獨的低優先級線程下載廣告。因此,您可以確保加載廣告不會佔用太多CPU時間。通過一些CPU同步,您可以確保在完全準備好顯示之前不要嘗試顯示新廣告。當然,它會吸取一些CPU時間,而不是你想要做的事情,但是要把你的優先級設置得恰到好處,並且它應該只是吸引你無所事事的時間。

0

請原諒這裏的線程壞處,但我已經使用了Stack Overflow來幫助我解決編碼過程中遇到的問題,並認爲我的經驗可能對未來某個人有用。

直到我實現AdWhirl(僅集成AdMob + iAd)時,我的簡單cocos2d遊戲才運行正常的FPS(很少更改FPS顯示)。然後在前幾次迭代中運行OK,但在第9或第10場景刷新時(單屏幕遊戲,平均每個場景的時間爲< 5秒),FPS將下潛到〜20FPS,並且每次場景再次下降刷新。

原來,在我的可能性(這可能是我特別:)),我從內部調用場景。也就是說,一旦動作完成,最後一個動作就是再次調用主場景(一種重建場景的懶惰方式,讓用戶可以再次進入)。這初始化了我爲重新處理AdWhirl廣告插入的視圖和視圖控制器,不僅我有內存泄漏,還有10多個視圖控制器都試圖請求和服務AdWhirl的廣告。一旦我得到了線索並把自我指涉的循環帶出去,一切都很好。