Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Pytanie] Gra 3D W... Autoit!?


Rekomendowane odpowiedzi

Opublikowano

Szukając jakichś ciekawych informacji o AutoIt, natknąłem się na TEN temat dotyczący 'pluginu Irrlicht który umożliwia programowanie orientowane obiektowo w AutoIt'.(?)

 

Miał już ktoś z tym styczność i wie więcej na ten temat?

I najważniejsze - Czy dzięki temu można byłoby napisać grę 3D w AutoIt?

Opublikowano

Nie nie można stworzyć gry chyba że interesują cie prymitywy

 

 

Już kiedyś próbowałem bawić się z tym UDF'em lecz co chwilę błędy po czym stwierdziłem że nie jest mi to do niczego potrzebne

Opublikowano

Zastanów się co trzeba w grze RTS z punktu widzenia programisty a co daje ci autoit

Opublikowano

Niestety nie mogę się nad tym zastanowić - nie jestem programistą :P

Ale z tego co widzę w przykładach które były załączone z pluginem, da się zrenderować teren, postacie, stworzyć skybox, et ceterum. A to podstawy, według mnie, dałoby się zrobić RTS bez problemu :D

Opublikowano

Tu potrzeba wielowątkowości i szybkości wykonywania kodu ,

 

Chociaż wielowątkowość oferuje system operacyjny a nie język programowania lecz o ile mi wiadomo autoit nie potrafi z tego skorzystać i jest za wolny by obsłużyć dwie postacię walczące ze sobą w czasie rzeczywistym

i w dodatku w 3d !

Opublikowano

AutoIt obsługuje wielowątkowość (z tego co czytałem na oficjalnym forum). Taa... można rzec że jest bardzo wolny, ale z procesorami które będą istnieć za kilka lat, to żaden problem :D

Opublikowano

No moze jak każdy będzie miał w domu 12 rdzeniowy procesor chłodzony ciekłym azotem to śmiało próbuj

Opublikowano

Mylicie pojęcia.

 

Programowanie obiektowe to - np. - COM albo AvtiveX, Autoit ma pełne wsparcie dla obydwu.

 

Ta biblioteka służy renderowaniu grafiki, nie ma nic wspólnego z programowaniem obiektowym.

 

Co do tworzenia własnej gry (planszówka, platformówka, RTS), najłatwiej chyba będzie w Javie.

 

FPS to coś niższego poziomu musowo, zapewne jakieś C.

 

Dobry ogarniacz napisze ci w Javie b. fajną platformówkę w... 48 godziny. Seriously. Ciekawy news o tym:

http://www.cdaction.pl/news-14418/metagun-o-tym-jak-zrobic-gre-w-siedem-minut-wideo.html

 

Jeśli jakaś gra w Au3, to nic bardziej skomplikowanego od Pokemonów (tych gameboy'owych). Nawet Mario czarno widzę...

 

Jak cię to interesuje, to zacznij od stworzenia własnego moda, np. do Warcrafta 2. To jest stara gra, dzięki czemu dość prosta, znajdziesz na internecie pełny zestaw narzędzi moderskich do niej. Trzeba zacząć od drobnych rzeczy, potem przyjdzie pora na własne projekty ;]

 

Co do FPSa to najbardziej przyjazny modowaniu jest bodajże HalfLife ;]

 

World of Goo jest fajnym przykładem 2letniej pracy 10os. grupki amatorów, którzy zbili niezły szmal i sławę na swoim dziele.

Cel dla ambitnych ;]

Ta sygnatura jest pusta.

Opublikowano

Interesuję mnie to, zresztą zawsze interesowało. Ale jakoś nigdy nie mogłem pojąć JAK to wszystko działa. Do teraz myślałem (chodzi o gry 3D) że postacie, i wszystko co wizualne, są tworzone w programach do modelowania 3D, a "fizyka", oświetlenie i "ładowanie" tych wszystkich modeli dzieje się w silniku graficznym pisanym w np. OpenGL/DirectX a na koniec, trzeba to wszystko zaprogramowować w np. C++. Myślałem że już to pojąłem, i mogę się zacząć uczyć cpp ale jak teraz czytam to wszystko o COM i ActiveX, to mnie ciarki przechodzą xD

 

Ale pewnie z czasem to zrozumiem. Zastosuję się do twoich rad - zacznę od modowania jakichś starych i prostych gierek.

 

 

PS. Wiesz gdzie mógłbym znaleść jakąś bardzo stara grę 2D open-source? Analiza kodu pomogłaby mi zrozumieć jak to wszystko działa ;]

 

Dzięki.

Opublikowano

Rand kolko i krzyzyk nawet jest trudno zrobic ten program sluzy do tworzenia

nowych programow a nie gier do gier jest np:

 

-Rpg Maker 2000

-Rpg Maker 2003

-Rpg Maker XP

-Rpg Maker VX

-The Game Factory

 

Takze mowie gre to tak trodno zrobic

Administrator Priv-Crafting

admh.png

 

Administrator GCraftt

Administrator TheEscape

Opublikowano

Macie gre snake

 

;left arrow                        25
;up arrow                            26
;right arrow                          27
;down arrow                        28
;space bar                          20
#include <GuiConstants.au3>
#include <Array.au3>
opt("GuiOnEventMode", 1)

MsgBox(0, "Directions", "Uzyj Strzalek aby rozpoczac gre.Aby Zatrzymac gre wcisnij spacje.")

$gui = GUICreate("Snake", 400, 400)
GuiSetBkColor(0x000099) 
GUISetState()
GUISetOnEvent($gui_event_close, "_Exit")

Global $clientsize = WinGetClientSize($gui)
Global $speedder = 150
Global $food
Global $snakelength = 0
Dim $board[40][40] ; tracks the board
Dim $snake[$snakelength + 1][3] ; positions and parts of the snake
Dim $food_location[2] ; not possible for multiple food locations?

DllOpen("user32.dll")
_start()
Global $dx = 1
Global $dy = 0
_sleep()
While 1
   Sleep($speedder)

   If _IsPressed(25) Then
       $dx = -1
       $dy = 0
   EndIf
   If _IsPressed(27) Then
       $dx = 1
       $dy = 0
   EndIf
   If _IsPressed(26) Then
       $dx = 0
       $dy = -1
   EndIf
   If _IsPressed(28) Then
       $dx = 0
       $dy = 1
   EndIf
   move()
   If _IsPressed(20) Then
       _sleep()
   EndIf
WEnd
Func _start()
   $snakelength = 0
   ReDim $snake[$snakelength + 1][3]
   Local $x, $y, $a, $b, $pos
   For $x = 0 To 39
       For $y = 0 To 39
           $board[$x][$y] = 1 ; empty
       Next
   Next
   $a = Int(Random(3, 36))
   $b = Int(Random(3, 36))
   $snake[0][2] = GUICtrlCreateLabel("", $a * 10, $b * 10, 10, 10)
   GUICtrlSetBkColor($snake[0][2], 16777215)
   $pos = ControlGetPos($gui, "", $snake[0][2])
   $snake[0][0] = Int($pos[0] / 10)
   $snake[0][1] = Int($pos[1] / 10)
;MsgBox (0, "Diagnostic", $snake[0][0] & ", " & $snake[0][1])
   $board[$a][$b] = 0 ; snake  simplifies the "can I go there?" logic

   Do
       $a = Int(Random(0, 39))
       $b = Int(Random(0, 39))
   Until $board[$a][$b] = 1 ; empty
   $food = GUICtrlCreateLabel("", $a * 10, $b * 10, 10, 10)
   $pos2 = ControlGetPos($gui, "", $food)
   $food_location[0] = $pos2[0] / 10
   $food_location[1] = $pos2[1] / 10
   GUICtrlSetBkColor($food, 39219)
   $board[$a][$b] = 2 ; food
EndFunc  ;==>_start

Func move()

   Local $newhead[3]
   $newhead[0] = $snake[0][0] + $dx
   $newhead[1] = $snake[0][1] + $dy

   Local $oldtail[3]
   $oldtail[0] = $snake[$snakelength][0]
   $oldtail[1] = $snake[$snakelength][1]
   $oldtail[2] = $snake[$snakelength][2]

   Select
       Case $newhead[0] < 0 Or $newhead[0] > 39 Or $newhead[1] < 0 Or $newhead[1] > 39
           If $snakelength > 0 Then
               MsgBox(0, "Twoj waz zjadl sciane.", "Twoje węża "& ($snakelength + 1) & " units long")
           Else
               MsgBox(0, "Twoj waz zjadl sciane.", "Powinienes grac wiecej w weza.")
           EndIf
           _cleanup()

       Case $board[$newhead[0]][$newhead[1]] ; OK to go there
           $newhead[2] = GUICtrlCreateLabel("", $newhead[0] * 10, $newhead[1] * 10, 10, 10)
           GUICtrlSetBkColor($newhead[2], 16777215)
           If $board[$newhead[0]][$newhead[1]] = 2 Then ; Ate Food
           ; Move food
               Do
                   $a = Int(Random(0, 39))
                   $b = Int(Random(0, 39))
               Until $board[$a][$b] = 1 ; empty
               $board[$a][$b] = 2 ; food
               GUICtrlSetPos($food, $a * 10, $b * 10)
               $snakelength = $snakelength + 1
               ReDim $snake[$snakelength + 1][3]
           Else
               GUICtrlDelete($oldtail[2])
               $board[$oldtail[0]][$oldtail[1]] = 1
           EndIf
           $board[$newhead[0]][$newhead[1]] = 0
           For $i = $snakelength To 1 Step - 1; Array shift
               $snake[$i][0] = $snake[$i - 1][0]
               $snake[$i][1] = $snake[$i - 1][1]
               $snake[$i][2] = $snake[$i - 1][2]
           Next
           $snake[0][0] = $newhead[0]
           $snake[0][1] = $newhead[1]
           $snake[0][2] = $newhead[2]
       Case Else
       ;eat self
           MsgBox(0, "twoj wąż zjadł się", "You snake was "& ($snakelength + 1) & " units long")
           _cleanup()
   EndSelect
EndFunc  ;==>move

Func _cleanup()
   For $x = 0 To 39
       For $y = 0 To 39
           $board[$x][$y] = 1 ; empty
       Next
   Next
   GUICtrlDelete($food)
   For $i = 0 To $snakelength
       GUICtrlDelete($snake[$i][2])
   Next
   _start()  ; This is going to choke after 300 something calls
   _sleep()
EndFunc  ;==>_cleanup

Func _Exit()
   DllClose("user32.dll")
   Exit
EndFunc  ;==>_Exit
Func _sleep()
   Do
       Do
           Sleep(100)
       Until _IsPressed(25) Or _IsPressed(26) Or _IsPressed(27) Or _IsPressed(28)
       If _IsPressed(25) Then
           $dx = -1
           $dy = 0
       EndIf
       If _IsPressed(27) Then
           $dx = 1
           $dy = 0
       EndIf
       If _IsPressed(26) Then
           $dx = 0
           $dy = -1
       EndIf
       If _IsPressed(28) Then
           $dx = 0
           $dy = 1
       EndIf
   Until _IsPressed(25) Or _IsPressed(26) Or _IsPressed(27) Or _IsPressed(28)
EndFunc  ;==>_sleep
Func _IsPressed($hexkey)
   Local $ar, $brv
   $hexkey = '0x' & $hexkey
   $ar = DllCall("user32", "int", "GetAsyncKeyState", "int", $hexkey)

   If $ar[0] <> 0 Then
       $brv = 1
   Else
       $brv = 0
   EndIf

   Return $brv
EndFunc  ;==>_IsPressed

Gra jest w jezyki angielskim ale mogę ja spolszczyc :_

 

@edit spolszczylem ją zobaczcie czy dziala

nie regulaminowa sygnatura

Opublikowano

a właśnie że ma , zacznij od nauki takich to moze skonczysz na niewiele lepszych za kilka miesięcy , bo do zrobienia gry 3D bardzo dużo ci brak z podstaw nawet autoita

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

Przeczytaj proszę Cie temat - dotyczy on pytania czy tworzenie gier 3D jest możliwe w AutoIt.

 

I ja nie chcę pisać gier w AutoIt, chcę to robić w C++ którego się uczę (od dziś :P).

Opublikowano

To raczej by był, interaktywny pokaz slajdow 3d a nie gra. W autoit nie osiagniesz takiej predkosci co w cpp czy assemblerze. Nawet gry pisane w javie sa o wiele wolniejsze od tych z cpp.

RAsfepN.png
Opublikowano

2xUP i dziś skonczyłeś po zobaczeniu poziomu trudności tego języka

 

@UP gra w assemblerze !? ile by to było jak assembler jest językiem niskiego poziomu czyli jedno polecenie = jeden rozkaz dla procesora

 

15k linijek ? taka 2d platformówka

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...