Тема: подгрузка
Показать сообщение отдельно
Старый 03.04.2006, 21:55   #6
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Я это все давно уже сделал.
Время подгрузки с тайлами 200х200 м (город)
на атлон 1900 +
1 сек
Вся эта фигня еще и с сервером работает

Примерно как это выглядит в коде:

Function UpdateLevel()
 *If EntityX(HeroModel)>110
 * * messageLoad() 
 * * EntityType *HeroModel,0 
 * * posXInc()
 * * U_l()
 *EndIf 
 * If EntityX(HeroModel)<-110
 * * messageLoad()
 * * EntityType *HeroModel,0
 * * posXDec()
 * * U_l()
 *EndIf
 * * If EntityZ(HeroModel)>110
 * * *messageLoad()
 * * *EntityType *HeroModel,0 
 * * * posZInc() 
 * * *U_l()
 *EndIf 
 * If EntityZ(HeroModel)<-110
 * * * messageLoad()
 * * * EntityType *HeroModel,0
 * * * posZDec()
 * * * U_l()
 *EndIf

End Function

Function posXInc()
 * *FreeEntity x1z1
 * *FreeEntity x1z2
 * *FreeEntity x1z3
 * 
 * x1z1=x2z1
 * x1z2=x2z2
 * x1z3= x2z3
 * x2z1=x3z1
 * x2z2=x3z2
 * x2z3= x3z3


LocationX=LocationX+1

If LocationX=x_max +1 LocationX=x_min

level$=levelSet$(LocationX,LocationZ)


;--------------load-----------


xi=LocationX+1
xd=LocationX-1
zd=LocationZ-1
zi=LocationZ+1

If xd<x_min xd=xd+(x_max-x_min)
If xi>x_max xi=xi-(x_max-x_min)
If zd<z_min zd=zd+(x_max-x_min)
If zi>z_max zi=zi-(x_max-x_min)

Level_A$="0"+(xi)+"_"+"0"+(zd)
x3z1=CreateScene(Level_A$)

Level_A$="0"+(xi)+"_"+"0"+(LocationZ)
x3z2=CreateScene(Level_A$)
 *
Level_A$="0"+(xi)+"_"+"0"+(zi)
x3z3=CreateScene(Level_A$)


PosLevel()
PositionEntity HeroModel,EntityX(HeroModel)-200,EntityY(HeroModel),EntityZ(HeroModel)

End Function
;==================
Function posXDec()
 * *FreeEntity x3z1
 * *FreeEntity x3z2
 * *FreeEntity x3z3
 * 
 * x3z1=x2z1
 * x3z2=x2z2
 * *x3z3= x2z3

 * x2z1=x1z1
 * x2z2=x1z2
 * x2z3=x1z3

LocationX=LocationX-1

If LocationX=x_min-1 LocationX=x_max
 
level$=levelSet$(LocationX,LocationZ)

;--------------load-----------
xi=LocationX+1
xd=LocationX-1
zd=LocationZ-1
zi=LocationZ+1

If xd<x_min xd=xd+(x_max-x_min)
If xi>x_max xi=xi-(x_max-x_min)
If zd<z_min zd=zd+(x_max-x_min)
If zi>z_max zi=zi-(x_max-x_min)

Level_A$="0"+(xd)+"_"+"0"+(zd)
x1z1=CreateScene(Level_A$)

Level_A$="0"+(xd)+"_"+"0"+(LocationZ)
x1z2=CreateScene(Level_A$)
 *
Level_A$="0"+(xd)+"_"+"0"+(zi)
x1z3=CreateScene(Level_A$)


PosLevel()
PositionEntity HeroModel,EntityX(HeroModel)+200,EntityY(HeroModel),EntityZ(HeroModel)

End Function
Function posZInc()


 * *FreeEntity x1z1
 * *FreeEntity x2z1
 * *FreeEntity x3z1
 * 
 * x1z1=x1z2
 * x2z1=x2z2
 * *x3z1=x3z2

 * x1z2=x1z3
 * x2z2=x2z3
 * x3z2=x3z3

LocationZ=LocationZ+1 
If LocationZ=z_max +1 LocationZ=z_min
level$=levelSet$(LocationX,LocationZ)


;--------------load-----------
xi=LocationX+1
xd=LocationX-1
zd=LocationZ-1
zi=LocationZ+1

If xd<x_min xd=xd+(x_max-x_min)
If xi>x_max xi=xi-(x_max-x_min)
If zd<z_min zd=zd+(x_max-x_min)
If zi>z_max zi=zi-(x_max-x_min)

Level_A$="0"+(xd)+"_"+"0"+(zi)
x1z3=CreateScene(Level_A$)

Level_A$="0"+(LocationX)+"_"+"0"+(zi)
x2z3=CreateScene(Level_A$)
 *
Level_A$="0"+(xi)+"_"+"0"+(zi)
x3z3=CreateScene(Level_A$)


PosLevel()

PositionEntity HeroModel,EntityX(HeroModel),EntityY(HeroModel),EntityZ(HeroModel)-200
End Function
;==================
Function posZDec()
 * *FreeEntity x1z3
 * *FreeEntity x2z3
 * *FreeEntity x3z3
 * 
 * x1z3=x1z2
 * x2z3=x2z2
 * x3z3=x3z2

 * x1z2=x1z1
 * x2z2=x2z1
 * x3z2=x3z1

LocationZ=LocationZ-1 
If LocationZ=z_min-1 LocationZ=z_max
level$=levelSet$(LocationX,LocationZ)

;--------------load-----------
xi=LocationX+1
xd=LocationX-1
zd=LocationZ-1
zi=LocationZ+1

If xd<x_min xd=xd+(x_max-x_min)
If xi>x_max xi=xi-(x_max-x_min)
If zd<z_min zd=zd+(x_max-x_min)
If zi>z_max zi=zi-(x_max-x_min)

Level_A$="0"+(xd)+"_"+"0"+(zd)
x1z1=CreateScene(Level_A$)

Level_A$="0"+(LocationX)+"_"+"0"+(zd)
x2z1=CreateScene(Level_A$)
 *
Level_A$="0"+(xi)+"_"+"0"+(zd)
x3z1=CreateScene(Level_A$)


PosLevel()
PositionEntity HeroModel,EntityX(HeroModel),EntityY(HeroModel),EntityZ(HeroModel)+200

End Function

;==================
Function PosLevel()

PositionEntity x1z1,-200,0,-200
PositionEntity x1z2,-200,0,0
PositionEntity x1z3,-200,0,200

PositionEntity x2z1,0,0,-200
PositionEntity x2z2,0,0,0
PositionEntity x2z3,0,0,200


PositionEntity x3z1,200,0,-200
PositionEntity x3z2,200,0,0
PositionEntity x3z3,200,0,200

End Function
;=====================
Function U_l()
 EntityType HeroModel,1

 

 Send_Location()
 gravity=0.1
 Rotate_camera()
 UpdateSky()
 Position_location_bot()
End Function
Оптимально использовать бзд формат.
Он на 1-2% медленней рисуется чем 3дс, но зато внешний вид намного лучше + масса возможностей в плане графики (поддержка интересных материалов в максе)
__________________
(Offline)
 
Ответить с цитированием