purebasic.info

PureBasic forum
Текущее время: Пн апр 23, 2018 4:48 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: подскажите,как делать игры
СообщениеДобавлено: Вт июн 11, 2013 2:13 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Ср май 08, 2013 10:51 am
Сообщений: 621
Откуда: Новотроицк
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
1)чего читать?
2)простой пример игры в исходнике
3)использования изображений ,создание терариума и все такое в общем,кто что может


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 11, 2013 3:17 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
Владислав писал(а):
1)чего читать?
Справку, наш и буржуйский форумы :)

Владислав писал(а):
2)простой пример игры в исходнике
C:\Program Files\PureBasic\Examples\ - там вроде есть исходник игры (Waponez вроде называется)

Владислав писал(а):
3)использования изображений ,создание терариума и все такое в общем,кто что может
C:\Program Files\PureBasic\Examples\3D - много примеров 3D

З.Ы. За тяжёлую работу взялся :)

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 11, 2013 3:21 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2270
Откуда: Russia — Belarus
Благодарил (а): 5 раз.
Поблагодарили: 71 раз.
Пункты репутации: 11
Странные вопросы, ты хоть напиши какую игру хочешь сделать. Одно дело — Pacman, совсем другое — 3D бильярд.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 11, 2013 3:28 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
qpAHToMAS писал(а):
3D бильярд
За это вообще лучше не браться. Тут нужно не только знание 3д, но и понимание геометрии и физики. Я это говорю как человек, занимающийся бильярдом уже около 2 лет. Впрочем, некоторые умельцы такое мутят и на Flash. Страшно подумать, сколько там кода:
http://billiards3d.net/

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 11, 2013 3:58 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Ср май 08, 2013 10:51 am
Сообщений: 621
Откуда: Новотроицк
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
qpAHToMAS

3d fps ну или как то так в общем серверная 3 д игрушка,тип контры

_________________
Порядок необходим глупцам, гений же властвует над хаосом(А.Эйнштейн ©)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 11, 2013 4:20 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Ср май 08, 2013 10:51 am
Сообщений: 621
Откуда: Новотроицк
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Никита Однороб
3д не иницилизирован на всех
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
;
; ------------------------------------------------------------
;
;   PureBasic - FPS First Person
;
;    (c) 2011 - Fantaisie Software
;
; ------------------------------------------------------------
; WaterWorld files come from the software Deled
; http://www.delgine.com, Thanks For this great editor 3D.
 
 
Global ScreenWidth, ScreenHeight
 
IncludeFile "Screen3DRequester.pb"
 
#PlayerSpeed = 80
#CameraSpeed = 10
 
Structure Vector3
  x.f
  y.f
  z.f
EndStructure
 
Structure s_Key
  Up.i
  Down.i
  Left.i
  Right.i
  Jump.i
EndStructure
 
Structure s_Entity
  EntityBody.i
  BodyOffsetY.f
  elapsedTime.f
  Fov.f
  Key.s_Key
  MainNode.i  
  CameraNode.i  
  HandNode.i
  ForwardNode.i
  StrafeNode.i
EndStructure
 
 
Macro GetNodePosition(Position, Node)
  Position\x = NodeX(Node)  
  Position\y = NodeY(Node)  
  Position\z = NodeZ(Node)  
EndMacro
 
Macro SubVector3(V, V1, V2)
  V\x = V1\x - V2\x
  V\y = V1\y - V2\y
  V\z = V1\z - V2\z
EndMacro
 
;-Declare
Declare HandleEntity(*Entity.s_Entity)
Declare OnGround(*Entity.s_Entity)
 
Define Robot.s_Entity
Dim Barrel.Vector3(2)
Barrel(0)\x =  0 : Barrel(0)\y =  0 : Barrel(0)\z = 0  
Barrel(1)\x = 60 : Barrel(1)\y =  0 : Barrel(1)\z = 0
Barrel(2)\x = 30 : Barrel(2)\y = 70 : Barrel(2)\z = 0
 
If InitEngine3D()
 
  InitSprite()
  InitKeyboard()
  InitMouse()
 
  If Screen3DRequester()
 
    ;- AddArchive
    Add3DArchive("../Data/Textures"            , #PB_3DArchive_FileSystem)
    Add3DArchive("../Data/Models"              , #PB_3DArchive_FileSystem)
    Add3DArchive("../Data/Scripts"             , #PB_3DArchive_FileSystem)
    Add3DArchive("../Data/Packs/waterworld.zip", #PB_3DArchive_Zip)
    Parse3DScripts()
   
    ;- Material
    CreateMaterial(0, LoadTexture(0, "r2skin.jpg"))
    CreateMaterial(1, LoadTexture(1,"viseur-jeux.png"))
    MaterialBlendingMode(1, #PB_Material_AlphaBlend)
    GetScriptMaterial(3, "Color/Red")
    CreateMaterial(4, LoadTexture(4, "RustyBarrel.png"))
   
    ;- Bullet
    CreateSphere(3,10)
   
    ;- Robot Body
    LoadMesh   (0, "robot.mesh")
    CreateEntity(0, MeshID(0), #PB_Material_None, -400, 300, -100)
    HideEntity(0, 1)
   
    ;- Gun
    LoadMesh(1, "AKM.mesh")
    CreateEntity(1, MeshID(1), MaterialID(0))
    ScaleEntity(1, 0.001, 0.001, 0.001)
    RotateEntity(1, 90, -85, 0)
   
    ;- Ground
    LoadMesh(2, "waterworld.mesh")
    CreateEntity(2, MeshID(2), #PB_Material_None)
   
       
    ;- Barrel
    LoadMesh(4, "Barrel.mesh")
    Restore Barrel
    For i = 1 To 3
      Read.f x.f
      Read.f y.f
      Read.f z.f
      For j=0 To 2
        Barrel = CreateEntity(#PB_Any, MeshID(4), MaterialID(4), x+Barrel(j)\x, y+Barrel(j)\y, z+Barrel(j)\z)
        ScaleEntity(Barrel, 8, 10, 8)
        EntityPhysicBody(Barrel, #PB_Entity_CylinderBody, 50, 0, 0.5)
      Next
     Next
       
     ;Body
    EntityPhysicBody(0, #PB_Entity_CapsuleBody, 0.45, 0, 0)
    EntityPhysicBody(2, #PB_Entity_StaticBody)
   
    ;-Billboard
    CreateBillboardGroup(0, MaterialID(1), 1, 1)
    AddBillboard(0, 0, 0, 0, 0)
   
    With Robot
      \Fov = 50
      \EntityBody = 0
      \BodyOffsetY = 43
      \Key\Down  = #PB_Key_Down ;Down
      \Key\Left  = #PB_Key_Left ;Left
      \Key\Right = #PB_Key_Right;Right
      \Key\Up    = #PB_Key_Up   ;Up
      \Key\Jump  = #PB_Key_Space
   
      \MainNode   = CreateNode(#PB_Any) ; Entity position
      \CameraNode = CreateNode(#PB_Any,  0, 80,  0) ; Camera position
      \HandNode   = CreateNode(#PB_Any,  0, 80,  0) ; Hand position
      \ForwardNode= CreateNode(#PB_Any,  0,  0, -1) ; Direction normalized
      \StrafeNode = CreateNode(#PB_Any, -1,  0,  0) ; Direction normalized
     
      AttachNodeObject(\MainNode  , NodeID(\CameraNode))  
      AttachNodeObject(\MainNode  , NodeID(\HandNode))  
      AttachNodeObject(\MainNode  , NodeID(\ForwardNode))
      AttachNodeObject(\MainNode  , NodeID(\StrafeNode))
      AttachNodeObject(\HandNode  , EntityID(1))
      AttachNodeObject(\CameraNode, BillboardGroupID(0))
     
      RotateNode(\HandNode, 5, 0, 0, #PB_Relative)
      MoveBillboardGroup(0, 0, 0, -15)
      MoveEntity(1, 0.1, -0.1, 0.01)
    EndWith
   
    ;- Camera
    CreateCamera(0, 0, 0, 100, 100)
    CameraRange(0, 0.08, 5000)
    AttachNodeObject(Robot\CameraNode, CameraID(0))
    CameraLookAt(0, NodeX(Robot\ForwardNode) * 100, NodeY(Robot\CameraNode), NodeZ(Robot\ForwardNode) * 100)
   
    ;- Skybox
    SkyBox("desert07.jpg")
   
    ;- Light
    CreateLight(0, RGB(255, 255, 255), 200, 100, 200, #PB_Light_Point)
   
    ;- Fog
    Fog(RGB(127, 127, 127), 128, 10, 2000)
   
    ;- *** Main loop ***
    Repeat
      Screen3DEvents()
     
      If Engine3DFrameRate(#PB_Engine3D_Current)
        Robot\elapsedTime = 40/Engine3DFrameRate(#PB_Engine3D_Current)
      EndIf  
     
      HandleEntity(@Robot)
     
      RenderWorld(60)
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
  EndIf
 
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
 
End
 
Procedure OnGround(*Entity.s_Entity)
  ProcedureReturn RayCollide(NodeX(*Entity\MainNode),  NodeY(*Entity\MainNode)+1, NodeZ(*Entity\MainNode), NodeX(*Entity\MainNode), NodeY(*Entity\MainNode)-3,  NodeZ(*Entity\MainNode))
EndProcedure
 
Procedure HandleEntity(*Entity.s_Entity)
  Protected.Vector3 Forward, Strafe, PosMain, PosDir, PosStrafe
  Protected.f Speed, Speed2, SpeedShoot, x, y
  Protected.f MouseX, MouseY
  Static Jump.f, MemJump.i, Rot.Vector3, Trans.Vector3, Clic
 
 
  With *Entity
    GetNodePosition(PosMain, \MainNode)
    GetNodePosition(PosDir, \ForwardNode)
    GetNodePosition(PosStrafe, \StrafeNode)
    SubVector3(Forward, PosDir, PosMain)
    SubVector3(Strafe, PosStrafe, PosMain)
   
    Speed = #PlayerSpeed * \elapsedTime
    Speed2 = Speed * 0.5
    SpeedShoot = Speed * 10
   
     
    If  ExamineMouse()
     
      MouseX = -(MouseDeltaX()/200) * \Fov * \elapsedTime
      MouseY = -(MouseDeltaY()/200) * \Fov * \elapsedTime
      Rot\z = 0
      Rot\y + MouseX
      If NodePitch(\CameraNode) < 80 And MouseY > 0
        Rot\x + MouseY
      ElseIf NodePitch(\CameraNode) > -80 And MouseY < 0
        Rot\x + MouseY
      EndIf  
     
      If MouseButton(#PB_MouseButton_Left)
        If Clic = 0
          x = ScreenWidth / 2
          y = ScreenHeight / 2
          If PointPick(0, x, y)
            Clic = 1
            Shoot = CreateEntity(#PB_Any, MeshID(3), MaterialID(3), BillboardGroupX(0), BillboardGroupY(0), BillboardGroupZ(0))
            EntityPhysicBody(Shoot, #PB_Entity_SphereBody, 1)
            ApplyEntityImpulse(Shoot, PickX() * SpeedShoot, PickY() * SpeedShoot, PickZ() * SpeedShoot)
          EndIf
        EndIf
      Else
        Clic = 0
      EndIf
         
      If MouseButton(#PB_MouseButton_Right)
        If \Fov > 20
          \Fov - 2 * \elapsedTime
        EndIf  
      Else
        If \Fov < 50
          \Fov + 2 * \elapsedTime
        EndIf  
      EndIf
     
    EndIf
    If ExamineKeyboard()
     
      If KeyboardPushed(\Key\Jump) And OnGround(*Entity)
        Jump = 30
        MemJump = 1
      EndIf
     
      Rot\x * 0.30
      Rot\y * 0.30
      Rot\z * 0.30
      Trans\x * 0.80
      Trans\y = Jump
      Trans\z * 0.80
     
      If KeyboardPushed(\Key\Up)
        Trans\x = Forward\x * Speed
        Trans\z = Forward\z * Speed
      ElseIf KeyboardPushed(\Key\Down)
        Trans\x = Forward\x * -Speed2
        Trans\z = Forward\z * -Speed2
      EndIf
     
      If KeyboardPushed(\Key\Left)
        Trans\x = Strafe\x * Speed
        Trans\z = Strafe\z * Speed
      ElseIf KeyboardPushed(\Key\Right)
        Trans\x = Strafe\x * -Speed
        Trans\z = Strafe\z * -Speed
      EndIf
     
      MoveEntity(\EntityBody, Trans\x, Trans\y, Trans\z)
     
      If OnGround(*Entity)
        Jump = 0
      ElseIf MemJump  
        Jump + 30
        If Jump > 60
          MemJump = 0
        EndIf  
      Else  
        Jump - 4 * \elapsedTime
      EndIf  
    EndIf
         
   
    CameraFOV(0, \Fov)  
       
    RotateEntity(\EntityBody,     0, Rot\y, 0, #PB_Relative)
    RotateNode(\CameraNode  , Rot\x,     0, 0, #PB_Relative)
    RotateNode(\HandNode    , Rot\x,     0, 0, #PB_Relative)
   
    MoveNode(\MainNode, EntityX(\EntityBody), EntityY(\EntityBody) - \BodyOffsetY, EntityZ(\EntityBody), #PB_Absolute)
    RotateNode(\MainNode, 0, EntityYaw(\EntityBody), 0)
   
  EndWith  
EndProcedure
 
DataSection
  Barrel :
  Data.f -885, 300, 158
  Data.f -800, 60, -1580
  Data.f -710, 60, -1270
EndDataSection  



Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 11, 2013 4:55 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2270
Откуда: Russia — Belarus
Благодарил (а): 5 раз.
Поблагодарили: 71 раз.
Пункты репутации: 11
Владислав писал(а):
3d fps ну или как то так в общем серверная 3 д игрушка,тип контры

На Unity3D обрати внимание.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB