Autor Wątek: Pomysł na silnik  (Przeczytany 1872 razy)

Offline Gary

  • Użytkownik

# Styczeń 25, 2009, 01:35:42
Witajcie, jestem nowy na forum co nie znaczy że dopiero zaczynam programować!
Mam taki pomysł, który rozwijam i realizuje już od dłuższego czasu i chciałbym poznać wasze zdanie
na jego temat. Otóż mój "silnik" ma w założeniu być maksymalnie elastyczny, co nie znaczy że kwestia
szybkości nie jest brana pod uwagę. Owa elastyczność ma być osiągnięta głównie przez zastosowanie
dosyć dziwnego sposobu przechowywania danych oraz skryptom Lua. Dziwny sposób przechowywania
danych to oznacz, że w silniku nie będzie występować duża ilość klas (co jest standartem) ma być to zastąpione
poprzez strukturę hierarchiczną przechowująca dowolny typ zmiennych z zachowaniem częściowej kontroli:
typy podstawowe oraz wskaźniki. Celem jest osiągnięcie stanu w którym wszystkie podstawowe funkcje silnika będą możliwe do realizacji poprzez skrypty np. Rendering wszystkich obiektów(np.SSAO), rendering obiektu(ustawianie stanów rendera,textur), LOD,mangment sceny, logika gry, zachowanie fizyczne(PhysX), odtwarznie dźwięków, input.

Wiem że jest to trochę zawiłe ale mam nadzieje, że ktoś podzieli się ze mną swoją oceną takiego "silnika".
Pierwszą część silnika tzn. render + managment zamierzam ukończyć za jakieś dwa miesiące wtedy mogę umieścić
jakie części kodu które może trochę rozjaśnią temat.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Dab

  • Redaktor
    • blog

# Styczeń 25, 2009, 01:41:00
Nic z tego tekstu nie wynika. I nie za bardzo jest co "ocenić".

A skrypty do wszystkiego to niezbyt dobry pomysł. Chyba, że wydajność nie jest priorytetem. ;)

Offline Esidar

  • Użytkownik

# Styczeń 25, 2009, 02:06:26
Czyli cały pomysł można sprowadzić do tego, że cały silnik jest napisany w LUA. Wszystkie struktury i dane są trzymane w tablicach LUA a w C++ praktycznie nic nie jest przechowywane. Taka "struktura hierarchiczna" jest już zrealizowana w VM LUA więc nie trzeba jej tworzyć specjalnie w C++.
Problem w tym że nie będzie to jakoś szczególnie szybkie. Wiele gier oczywiście można w tym zrobić i wydajność będzie porównywalna do gierek we Flash'u lub gier casualowych. Pytanie tylko czy warto :)

bs.mechanik

  • Gość
# Styczeń 25, 2009, 02:07:01
Otóż mój "silnik" ma w założeniu być maksymalnie elastyczny...

Rozwiązanie najbardziej elastyczne, to takie które nigdy nie powstało. Uwierz mi, znacznie lepiej i prościej iść w konkretnym kierunku (renderowanie przestrzenii otwartych) i dać możliwość adaptacji innych możliwości (zwiedzanie budynków) niż na siłę robić maksymalnie uniwersalne rowiązanie, które tak na prawdę nie sprawdzi się w niczym dobrze.
Takie jest moje zdanie.

Poza tym, pomysł aby całość oprzeć na skryptach także nie jest udany. Jak już wspomniał Dab, znacznie stracisz na wydajności.

Offline Gary

  • Użytkownik

# Styczeń 25, 2009, 02:49:17
Bardzo dziękuje za posty, jestem ogromnie wdzięczny za sugestie jednak zamierzam kontynuować ten projekt, sądzę że kawałki kodu lepiej objaśnią mój pomysł. Oczywiście projekt ten jest realizowany głównie w celach edukacyjnych, dlatego jego wydajność nie jest głównym celem.

Offline Zielony

  • Użytkownik
    • Ghurund Engine

# Styczeń 25, 2009, 04:45:45
Przypomina mi to trochę Persistence of Vision Raytracer. Cały pomysł polegał na napisaniu interpretera języka opisu scen 3D i sposobu renderowania.

Offline Gary

  • Użytkownik

# Styczeń 25, 2009, 12:58:00
Jeszcze jedno pytanie. Czy np. zamiana tego żeby rendering był w skryptach na to żeby były wczytywane biblioteki z zadanego katalogu a następnie ustawianie skryptem żeby wywoływał dany renderer z danej biblioteki polepszyłoby problem szybkości ?

bs.mechanik

  • Gość
# Styczeń 25, 2009, 13:36:36
Co masz na myśli pisząc "biblioteka"? Jeśli chodzi o załadowanie z dll, to tak. Niektóre silniki sotosują takie rozwiązanie.

Offline Gary

  • Użytkownik

# Styczeń 25, 2009, 13:45:04
Tak mam na myśli dll. Tzn rozwiazanie podobne do tego z 3dMaxa, czyli w folderze sa biblioteki w nich funkcje inicjalizujące i następnie funkcje do renderingu przy wykorzystywaniu danego rendera zamieniane są tylko adresy funkcji renderujących. Takie rązwiązanie dalej zacowuje elastyczność ale jednocześnie pozwala na przyśpieszenie pracy silnika?

bs.mechanik

  • Gość
# Styczeń 25, 2009, 13:54:39
Myslę, że powino to pomóc - kod jest wykonywany natywnie. Z reszta, jak juz wcześniej wspomnialem, są silniki, które tak robią.