Ogłoszenie 

Uwaga! To forum jest w trybie offline.
Wszelką pomoc uzyskasz pod adresem
forum.ultimateam.pl


Administracja Forum


Poprzedni temat «» Następny temat
Zamknięty przez: Nhadala
Sob 15 Wrz, 2012 00:00
Silnik VX`a
Autor Wiadomość
Asantos 




Preferowany:
RPG Maker VX

Ranga RM:
1 gra

Pomógł: 15 razy
Dołączył: 31 Sty 2010
Posty: 236
Skąd: Gniezno
Wysłany: Czw 29 Lip, 2010 17:38
Jeśli chcesz się naprawdę zająć programowaniem to kup porządne książki. Polecam Symfonię, do c++, mam ją i bardzo jestem zadowolony z zakupu. Jeśli nie chcesz to skorzystaj z tutoriali internetowych, ale są tego pewne minusy:
- poradniki są zazwyczaj dość trudne,
- poradniki nie są kompletne,
- bardzo mało przykładów funkcji i tym podobnych.
To moje doświadczenia z internetowych poradników.


Z wiedzy internetowej będziesz umiał co najwyżej pisać kalkulatory. Chociaż na początku chyba tylko to każdy potrafi zaprogramować :) Dopiero potem przychodzi ochota na coś większego.
________________________
Rebelianci łączcie się!
 
 
FilipsO 




Preferowany:
RPG Maker VX

Ranga RM:
1 gra

Pomógł: 1 raz
Dołączył: 21 Maj 2010
Posty: 236
Skąd: z nikąd
Wysłany: Czw 29 Lip, 2010 19:31
Dzięki Asantos za rady.
A czy w C++ można napisać takiego "RMa"?
________________________
89% graczy uważa, że najważniejsza jest grafika.
Jeśli należysz do pozostałych 11% wklej to do swojego podpisu.

Moja Gra MMORPG Erathia:
 
 
Asantos 




Preferowany:
RPG Maker VX

Ranga RM:
1 gra

Pomógł: 15 razy
Dołączył: 31 Sty 2010
Posty: 236
Skąd: Gniezno
Wysłany: Czw 29 Lip, 2010 20:22
W C++ możesz co najwyżej silnik. Sam edytor to najlepiej WinApi`m.
________________________
Rebelianci łączcie się!
 
 
Rave 




Preferowany:
RPG Maker 2003

Pomógł: 12 razy
Dołączył: 30 Kwi 2010
Posty: 348
Skąd: /dev/null
Wysłany: Pią 30 Lip, 2010 07:44
Hej... Ale RM JEST napisany w C++, a wersje 2000/2003 (nie wiem jak z 95) były napisane 2 Delphi (Pascal). Język akurat nie jest ważny. Ważne są tylko umiejętności jego użycia. Znasz już Pascal i umiesz pisać zaawansowane rzeczy w nim? Trzymaj się tego. Nie znasz żadnego? Na początku proponowałbym naukę prostego Pythona. Python w połączeniu z biblioteką pyGame dają całkiem ciekawe możliwości jeśli chodzi o gry. Potem czas przyjdzie na kompilowalne języki takie jak C++ czy Pascal (Python podobnie jak Ruby to tylko interpreter).

Co do silnika VX, to Sabikku się niestety myli. Jasne - starej wersji Ruby się nie przeskoczy (chyba, że komuś chce się bawić w dekompilację/deassemblerację), ale tak naprawdę w Game.exe jest tylko sam interpreter ruby. Sam proces obsługi komend zdarzeń znajduje się w klasach Interpreter w edytorze skryptu.

Podsumowując: Nie ma rzeczy niemożliwych, jest tylko brak umiejętności.
________________________
Nie ma rzeczy niemożliwych, jest tylko brak umiejętności.
Używasz Windowsa 8? Jesteś łosiem.
Gość is the most intelligent person in the world.
 
 
 
Asantos 




Preferowany:
RPG Maker VX

Ranga RM:
1 gra

Pomógł: 15 razy
Dołączył: 31 Sty 2010
Posty: 236
Skąd: Gniezno
Wysłany: Pią 30 Lip, 2010 09:16
Przecież WinApi już z nazwy służy do programowania okienek. Nie mam wiedzy na temat czy da się okienkowo napisać C++`em edytor. Chyba że o stronę graficzną zadbamy WinApi`m a komendy C++, tak to jak najbardziej. Chociaż komendy w silniku też muszą być zapisane - w programie jest tylko komenda ich wywołania.

Chyba że się gdzieś pomyliłem.
________________________
Rebelianci łączcie się!
 
 
Rave 




Preferowany:
RPG Maker 2003

Pomógł: 12 razy
Dołączył: 30 Kwi 2010
Posty: 348
Skąd: /dev/null
Wysłany: Pią 30 Lip, 2010 10:17
Nie, sposób wykonywania komend jest jak najbardziej zapisany w klasach Interpreter. Przykład z makera xp (specjalnie dla was musiałem instalnąć...)

Spoiler:

Kod:
 def command_101
 # ほかの文章が message_text に設定済みの場合
    if $game_temp.message_text != nil
      # 終了
      return false
    end
    # メッセージ終了待機中フラグおよびコールバックを設定
    @message_waiting = true
    $game_temp.message_proc = Proc.new { @message_waiting = false }
    # message_text に 1 行目を設定
    $game_temp.message_text = @list[@index].parameters[0] + "\n"
    line_count = 1
    # ループ
    loop do
      # 次のイベントコマンドが文章 2 行目以降の場合
      if @list[@index+1].code == 401
        # message_text に 2 行目以降を追加
        $game_temp.message_text += @list[@index+1].parameters[0] + "\n"
        line_count += 1
      # イベントコマンドが文章 2 行目以降ではない場合
      else
        # 次のイベントコマンドが選択肢の表示の場合
        if @list[@index+1].code == 102
          # 選択肢が画面に収まる場合
          if @list[@index+1].parameters[0].size <= 4 - line_count
            # &#12452;&#12531;&#12487;&#12483;&#12463;&#12473;&#12434;&#36914;&#12417;&#12427;
            @index += 1
            # &#36984;&#25246;&#32930;&#12398;&#12475;&#12483;&#12488;&#12450;&#12483;&#12503;
            $game_temp.choice_start = line_count
            setup_choices(@list[@index].parameters)
          end
        # &#27425;&#12398;&#12452;&#12505;&#12531;&#12488;&#12467;&#12510;&#12531;&#12489;&#12364;&#25968;&#20516;&#20837;&#21147;&#12398;&#20966;&#29702;&#12398;&#22580;&#21512;
        elsif @list[@index+1].code == 103
          # &#25968;&#20516;&#20837;&#21147;&#12454;&#12451;&#12531;&#12489;&#12454;&#12364;&#30011;&#38754;&#12395;&#21454;&#12414;&#12427;&#22580;&#21512;
          if line_count < 4
            # &#12452;&#12531;&#12487;&#12483;&#12463;&#12473;&#12434;&#36914;&#12417;&#12427;
            @index += 1
            # &#25968;&#20516;&#20837;&#21147;&#12398;&#12475;&#12483;&#12488;&#12450;&#12483;&#12503;
            $game_temp.num_input_start = line_count
            $game_temp.num_input_variable_id = @list[@index].parameters[0]
            $game_temp.num_input_digits_max = @list[@index].parameters[1]
          end
        end
        # &#32153;&#32154;
        return true
      end
      # &#12452;&#12531;&#12487;&#12483;&#12463;&#12473;&#12434;&#36914;&#12417;&#12427;
      @index += 1
    end
  end



Co robi ten przydługi kod? Ano, odpowiada za komendę "Pokaż wiadomość"/"Show Message". Można go jakoś przyspieszyć? Pewnie tak. Chociaż w tym akurat przypadku nie zauważylibyśmy różnicy. Bardziej trzeba by się zabrać do komend obsługujących grafikę typu pokaż obrazek, zmień pogodę czy przygotuj/wykonaj przejście (tak, KAŻDA komenda zdarzeń ma odpowiadającą procedurę w klasie Interpreter. Problem jest tylko taki, aby ją odnaleźć).
________________________
Nie ma rzeczy niemożliwych, jest tylko brak umiejętności.
Używasz Windowsa 8? Jesteś łosiem.
Gość is the most intelligent person in the world.
 
 
 
Sabikku 




Nagrody:
UF i UFT2 Winner

Ranga RM:
4 gry

Pomógł: 73 razy
Dołączył: 04 Kwi 2010
Posty: 428
Wysłany: Pią 30 Lip, 2010 10:42
Cytat:
Co do silnika VX, to Sabikku się niestety myli. Jasne - starej wersji Ruby się nie przeskoczy (chyba, że komuś chce się bawić w dekompilację/deassemblerację), ale tak naprawdę w Game.exe jest tylko sam interpreter ruby. Sam proces obsługi komend zdarzeń znajduje się w klasach Interpreter w edytorze skryptu.

Eee, ani przez chwilę nie zaprzeczyłem, że interpreter w całości znajduje się w pliku scripts.rxdata, do edycji w edytorze skryptów. Jedyne co powiedziałem, to że to i tak nie ma znaczenia. Zajrzyj do helpa programu (rmxp/vx). Wszystkie elementarne klasy odpowiadające za odtwarzanie dźwięków, wyświetlanie i kontrolowanie grafiki (np. klasy Bitmap, Sprite, Window) są zakodowane (w .dllu). Dla przykładu 'Pokaż obrazek' z poziomu edytora skryptów to utworzenie obiektu klasy Sprite_Picture opartej na zakodowanej klasie Sprite, której nie da się zmodyfikować. Jedyne, co można edytować żeby przyspieszyć - to usunąć niepotrzebne właściwości programu. Nie przyspieszysz nic zachowując aktualne możliwości, bo jak mówiłem, do najważniejszego i tak nie ma dostępu.
 
 
 
Asantos 




Preferowany:
RPG Maker VX

Ranga RM:
1 gra

Pomógł: 15 razy
Dołączył: 31 Sty 2010
Posty: 236
Skąd: Gniezno
Wysłany: Pią 30 Lip, 2010 14:18
Rave, ja powiedziałem, że C++, według mojego poziomu wiedzy, nie używa się do tworzenia edytorów. Do tego wystarczy WinApi. Ale komendy w edytorze będą już pisane C++`em, a komendy te muszą być zasięgnięte z silnika. Chyba że chcemy mieć silnik scalony z edytorem...

Mój błąd :) Przecież WinApi to biblioteka C++. Ale tak czy inaczej tej biblioteki wykorzystuje się do okienek, a innych bibliotek najlepiej do silnika.
________________________
Rebelianci łączcie się!
 
 
Wyświetl posty z ostatnich:   
Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group | Template Klam by Ayene