2011-12-21 80 views
1

我在這裏遇到了一個小麻煩。我和一位朋友正在製作一款2D遊戲。我們正試圖實施一場「戰爭迷霧」,這將限制遊戲所看到的內容,從而無法看到四周的角落。儘管如此,我正試圖找出製作「影子地圖」的最佳方法,即隨着玩家的移動,像素可以在每一幀中改變。有時候的陰影貼圖是一個大的像1024x1024。我們正在使用LWJGL和Slick。每幀渲染和編輯大圖像的最佳方式?

是否有任何有效的方法來編輯和渲染每幀大圖像?

我已經看過本網站上的其他霧戰爭問題,但似乎沒有提到如何做實際的渲染和編輯。儘管我嘗試過使用Slick的ImageBuffer,但是我可以找到獲取圖像進行渲染的唯一方法是創建一個新的Image對象,即使丟棄舊的Image對象,也會導致巨大的內存泄漏。

回答

1

我想給這個老問題一個腳踢,希望能夠解決OP和其他人在這個話題中發生的問題。最近遇到同樣的問題,我想概述我的解決方案。請注意,儘管我使用的是2D遊戲引擎(我創建的),但我沒有使用OpenGL或JOGL,所以在這種情況下,我的繪圖方法非常具體而且不通用。您的具體答案必須根據您使用的系統進行調整。

在我的情況下,我已平鋪地圖,一般X大小Y。在角色上設置可視性(例如visibilityRange = visionLength)。

我還應該注意 - 我所有的「視線」都是從角色的中心開始的。

初始設置很簡單,只是在角色範圍之外創建一場戰爭迷霧。這爲我的角色創造了一個不錯的圈子。從那裏我會找到視覺半徑內的所有「視力阻滯劑」。繪製兩條線(一條到最左側的視角,最右側),然後遮住它後面的所有內容。任何受到部分打擊的事情,我都會做一場「半視」的戰爭迷霧。下面是一個粗略的例子...

P =播放器,X =視覺阻滯劑,L =低視力,N =沒有遠見

P  X N N N 
     L L L N 
X X X X L L N 

希望這有助於任何遊戲開發商跨越這個職位絆倒。

+0

感謝您的分享。我相信我的解決方案非常相似,但我不記得我已經做了什麼。 – Zachar543 2016-01-07 22:07:58

0

請原諒我,如果這個答案有點含糊,但嘗試使用像素緩衝區對象。它們是操縱像素數據的有效方式。

相關問題