forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на Blitz3D (http://forum.boolean.name/forumdisplay.php?f=14)
-   -   Bombers3D (http://forum.boolean.name/showthread.php?t=166)

pax 07.01.2006 16:52

Седня меня озарило!!! наверное от скуки :lol: и я решил проблему определения видимости.

Стер все аттачи в топике, теперь игра лежит здесь:

ехе'шник:
http://pax83.nm.ru/bombers3d_bin.rar

ресы:
http://pax83.nm.ru/bombers3d_res.rar

8)

pax 07.01.2006 16:55

а вот само решение:
Код:

Type TViz
        Field I%, J%, EndI%, EndJ%
        Field Direction%
End Type

Function *CreateVisPoints(plrNum%)
        Local plrI%=CXtoI%(plr(plrNum)\X%)
        Local plrJ%=CZtoJ%(plr(plrNum)\Z%)
        Local plrDir%=plr(plrNum)\Direction%
        Local CI%=plrI%, CJ%=plrJ%
        Local I%, J%
        Local EI%
        Local Dist%=VizDistanse%
        Select plrDir%
        Case Dir_Up
 *        CJ%=plrJ%-VizDistanse%
        Case Dir_Right
 *        CI%=plrI%+VizDistanse%
        Case Dir_Down *
 *        CJ%=plrJ%+VizDistanse%
        Case Dir_Left
 *        CI%=plrI%-VizDistanse%
        End Select
        VizUpd(plrI%,plrJ%,3)
        Select plrDir%
        Case Dir_Up, Dir_Down
 *If plrDir%=Dir_Up Then
 *        EI=plrJ%-VizDistanse%
 *Else
 *        EI=plrJ%+VizDistanse%
 *EndIf
 *CreateVPoint(plrI%,plrJ%,CI%,CJ%,plrDir%)
 *For I%=1 To VizDistanse%
 *        If I=A Then
 * *For TVizPoint.TViz = Each TViz
 * *        If (TVizPoint\I=plrI%) Then If (TVizPoint\J=plrI%) Then        If (TVizPoint\Direction%=plrDir%) Then Return
 * *Next
 *        EndIf
 *        CreateVPoint(plrI%,plrJ%,CI+I%,EI,plrDir%)
 *        CreateVPoint(plrI%,plrJ%,CI-I%,EI,plrDir%)
 *Next
        Case Dir_Right, Dir_Left
 *        If plrDir%=Dir_Right Then
 * *EI%=plrI%+VizDistanse%
 *        Else
 * *EI%=plrI%-VizDistanse%
 *        EndIf
 *        CreateVPoint(plrI%,plrJ%,CI%,CJ%,plrDir%)
 *For J%=1 To VizDistanse%
 *        If J=A Then
 * *For TVizPoint.TViz = Each TViz
 * *        If (TVizPoint\I=plrI%) Then If (TVizPoint\J=plrI%) Then        If (TVizPoint\Direction%=plrDir%) Then Return
 * *Next
 *        EndIf
 *        CreateVPoint(plrI%,plrJ%,EI%,CJ+J%,plrDir%)
 *        CreateVPoint(plrI%,plrJ%,EI%,CJ-J%,plrDir%)
 *Next
        End Select
       
End Function

Function CreateVPoint(I%,J%,EndI%,EndJ%,Direction%)
        TVizPoint.TViz = New TViz
        TVizPoint\I%=I%
        TVizPoint\J%=J%
        TVizPoint\EndI%=EndI%
        TVizPoint\EndJ%=EndJ%
        TVizPoint\Direction%=Direction%
End Function

Function UpdPlrViz()
        Local AngleKoef#, sg%=1
        Local D%, D1%, TI%,TJ%, A%, B%
        Local Index%
        Index%=0
       
        For TV.TViz=Each TViz
 *Index=Index+1
 *Select TV\Direction%
 *Case Dir_Up
 * *D%=TV\EndI%-TV\I%
 * *For J%=TV\J% To TV\EndJ% Step -1
 * *        TI%=TV\I% + Float(D%*Abs(TV\J%-J%))/Float(VizDistanse%)
 * *        TJ%=J%
 * *        If UPVAddon(TV, TI, TJ) Then Goto n
 * *Next
 *Case Dir_Right
 * *D%=TV\EndJ%-TV\J%
 * *For I%=TV\I% To TV\EndI%
 * *        TJ%=TV\J% + Float(D%*Abs(I%-TV\I%))/Float(VizDistanse%)
 * *        TI%=I%
 * *        If UPVAddon(TV, TI, TJ) Then Goto n
 * *Next
 *Case Dir_Down
 * *D%=TV\EndI%-TV\I%
 * *For J%=TV\J% To TV\EndJ%
 * *        TI%=TV\I% + Float(D%*Abs(J%-TV\J%))/Float(VizDistanse%)
 * *        TJ%=J%
 * *        If UPVAddon(TV, TI, TJ) Then Goto n
 * *Next
 *Case Dir_Left
 * *D%=TV\EndJ%-TV\J%
 * *For I%=TV\I% To TV\EndI% Step -1
 * *        TJ%=TV\J% + Float(D%*Abs(TV\I%-I%))/Float(VizDistanse%)
 * *        TI%=I%
 * *        If UPVAddon(TV, TI, TJ) Then Goto n
 * *Next
 *End Select
 * *If Not (TV=Null) Then
 * *        Delete TV
 * *EndIf
 *.n
 *If index>VizD2% Then Return
        Next

End Function

Function UPVAddon%(TV.TViz,TI%,TJ%)
        Local I%=0
        If TI<0 Then I%=1
        If TJ<0 Then I%=1
        If TI>CornerW Then I%=1
        If TJ>cornerH Then I%=1
        If I Then
 *Delete TV
 *Return 1
        EndIf
        If Not Sceneobject(TI%,TJ%)\Visibaly Then VizUpd(TI,TJ,2)
        Select Sceneobject(TI%,TJ%)\GeometryType%
 *Case GTNothing,GTWeapon%,GTTool%,GTTreasure%,GTStoneBall%;,GTPlayer%,GTMonster%,GTBlood%
 *        Return 0
 *Default
 *        Delete TV
 *        Return 1       
        End Select
End Function

скопировал прям из кода игры, так что неволнуйтесь, если чего-то не поймете ;)

pax 10.01.2006 00:01

Закачал новую версию Bombers3d (ссылки теже, которые на пару постов выше)

В новой версии:
- Обновил немного движок, так что игра стала немного быстрее работать
- "Туман войны" теперь имеет анимированную текстуру (Texture Maker рулит :super: )
- вывод статистики теперь выполняется графически а не текстом (Paint рулит)

Потестите пожалуйста на кол-во FPS... у меня он вырос...

Короче Blitz я не брошу... а C++&OpenGL буду изучать параллельно...

8)

pax 10.01.2006 00:32

А вот тут дополнительно около 80 карт для игры (из Mine Bombers - игра ремейк которой я делаю)
:)

(70Кб)

alcosholik 10.01.2006 22:36

Не могу сказать увеличился или нет, но на краю карты ФПС почти 400, в середине - 160.

1024х768, полноэкранный режим.

P4 2.4 GHz
512 MB RAM
GeForce FX 5200 64 MB

pax 10.01.2006 23:15

Цитата:

Originally posted by alcoSHoLiK@Jan 10 2006, 10:36 PM
Не могу сказать увеличился или нет, но на краю карты ФПС почти 400, в середине - 160.

1024х768, полноэкранный режим.

P4 2.4 GHz
512 MB RAM
GeForce FX 5200 64 MB

Пасиб за информацию... буду дальше работать над ускорением... но зато я рад, что смог сделать анимированный туман войны без снижения производительности...

кстати у меня на краю карты тоже где-то 400 FPS, а в середине около 200
моя система: Celeron D 2.4GHz/512/64GF4 MX440

странно, у меня вроде система тормознее, а игра быстрее немного работает... ааа Я ж на 800х600 тестил :lol:

скоро добавлю новый вид оружия - биомассу (тоже будет с анимированной текстурой), точнее текстура уже анимируется но добавить биомассу еще не успел :)

pax 19.01.2006 11:23

А вот так выглядит оригинальная игра, ремейк которой я делаю :)

pax 03.03.2006 16:03

Вот исходники игры...

Я наверное долго за нее не сяду...

может книть найдет для себя интересные фрагменты кода...

Если кто захочет доделать игру, то стукните мне в асю, или сюда сообщение кинте, объясню где в коде что...


Часовой пояс GMT +4, время: 10:22.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot