Autor Wątek: Silnik 2d  (Przeczytany 11347 razy)

wine

  • Gość
# Wrzesień 19, 2009, 20:24:45
W językach z prostszą składnią taką funkcjonalność zapewnia IDE :)
No i? To że kompilator XXX wspiera wstawki w Delphi nie znaczy że to główna zaleta by takowego używać. IDE wspiera -> OK. Ale IDE jest edytorem+debuggerem+kompilatorem wrzuconym do używania GUI bo jest bardziej przystępnie. Zauważ że w "nowoczesnych" językach jest tylko jedno poprawne według twórcy IDE (C#->Visual C#, Java->Netbeans) i inwestuje się grube miliony w ich rozwój. A C++ ma tą przejrzystość klas i funkcji w standardzie (mhm... albo inaczej mówiąc ją odziedziczył od C)  :)

- Duplikacja kodu pomiędzy .h/.cpp, trzeba pisać to samo w 2 miejscach. IDE to w pewnym stopniu rekompensuje, ale i tak jest to irytujące.
- Wspomniany przez Ciebie podział logiczny, mimo że w miarę słuszny w idei, i tak bierze w łeb gdy musisz wrzucać kod do nagłówków z powodu ograniczeń kompilatora (szablony, funkcje inline).
- Kompilacja jest długa i nudna, bo kompilator zwykle kompiluje jeden nagłówek kilkukrotnie (konsekwencja kompilacji każdego .cpp osobno). Zmusza to programistów do przerabiania kodu, by móc przerzucić jak najwięcej #include z .h do .cpp, lub korzystania z średnio wygodnych półśrodków typu PCH.
pierwszy - :  :(
drugi - : to jest wina kompilatora, liczy się idea  :D
trzeci - : albo korzystania z #pragma once lub #ifndef'ów

Offline Mr. Spam

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

Offline MadBonsai

  • Użytkownik
    • Ifrit

# Wrzesień 19, 2009, 20:33:30
Narzekasz, na brak dobrej standardowej, a do c++ są setki dobrych bibliotek i miliony linijek kodu, napisanych przez ludzi z całego świata dla ułatwienia pracy.
Ponadto przez to, że język jest najpopularniejszy szybko się rozwija.
Język sam w sobie żaden sposób się nie rozwija. Porównaj biblioteki standardowe Cepa i Javy.
Sprawdź, jak rozkłada się wykorzystanie konkretnych języków przez programistów na świecie. Sprawdź, ile innych języków posiada setki dobrych bibliotek (podpowiedź: dotyczy to również JavaScript). Sprawdź, w ilu językach wklepano "miliony linijek kodu" przez ludzi z całego świata.

Progerzy rozwijają oprogramowanie w danym języku, ew. biblioteki, nie sam język. No chyba, że pracują w SUN Microsystems (wstaw inną instytucją zaangażowaną w rozwijanie bądź tworzenie nowych języków).

Cytuj
Jasne, czasem tak. Ale zazwyczaj wielka wada. Powiedz mi, ile projektów gier indie, robionych przez jednego, dwóch programistów może potrzebować takiej armaty na komara? Smiley
Czyż programista zaczynając od małej gry nie kończy często w dużej firmie tworzącej gry? Pasja, to pasja.
Rzadko. Znacznie rzadziej niż byśmy chcieli. Poza tym proger rzadko kończy własną grę, by aplikować do studia, to nie jest nigdzie wymagane.

Offline Charibo

  • Redaktor

# Wrzesień 19, 2009, 20:45:32
Cytuj
Podaj trzy zalety. Smiley
1. Klasa jest przejrzysta, bo długie funkcje masz w pliku .cpp
2. ... przez co koderzy łatwiej mogą dostrzec składniki
3. Jest jakiś porządek (jeżeli programista go dochowa...) - cpp zawiera funkcje, kod, natomiast headery zawierają inkludowane biblioteki, definicje, klasy ( w tej postaci "krótkiej" jak pisałem wcześniej ).
Doh. Homoseksualizm jest dobry, bo jest bardziej przejrzysty?

Cytuj
Jasne, czasem tak. Ale zazwyczaj wielka wada. Powiedz mi, ile projektów gier indie, robionych przez jednego, dwóch programistów może potrzebować takiej armaty na komara? Smiley
Czyż programista zaczynając od małej gry nie kończy często w dużej firmie tworzącej gry? Pasja, to pasja.
Dla mnie pasja to pasja, jeśli nie muszę klepać tysięcy sloc, żeby mieć ficzer który nigdy mi się nie przyda, lub który w innym rozwiązaniu już istnieje i jest dobry. Takie rzeczy trochę mi się już nudzą. :P

Czas najważniejszy dla programisty, ale nauka jeszcze ważniejsza.
Dla mnie nie. Dla mnie liczy się efekt. Jeśli mogę osiągnąć efekt, bez zbędnej nauki, to dlaczego nie?

Idąc dalej Twoją filozofią dojdziemy do punktu, gdy zostaniemy jedynie projektantem gry, bo pisanie to strata czasu - komputer sam powinien wszystko zrobić.
No i to byłby układ idealny. :) Jedyną rzeczą lepszą od pisania kodu jest niepisanie kodu. Ale niestety tak się nie da :|

Silników powstaje dużo, bo jak ktoś pisał dużo programistów gier jednak zaczyna się bawić nie w gry, a silniki.
Ok, call the shot - podaj mi trzy silniki zrobione w ten sposób, które są warte uwagi pod kątem pisania faktycznej gry, bez konieczności dopisywania toolsetów.

Mało czasu to największy problem. I'm sorry..   8)
Nie mało czasu, czasu mam dużo. Ale mi go żal na bzdety (czyli pisanie zbędnego kodu). :)

---
No i? To że kompilator XXX wspiera wstawki w Delphi nie znaczy że to główna zaleta by takowego używać.
Jeśli problem, który musisz rozwiązać osiągnie jakąś korzyść na używaniu wstawek w Delphi (i ograniczysz przy tym pisanie nadmiarowego kodu), to tak - jest to główna zaleta, żeby go używać. ;)

Zauważ że w "nowoczesnych" językach jest tylko jedno poprawne według twórcy IDE (C#->Visual C#, Java->Netbeans) i inwestuje się grube miliony w ich rozwój.
To jest dobre. Dzięki temu produkty te są dopracowane pod każdym szczegółem. A nawet darmowe. Czego chcieć więcej? Poza tym gadka, że "C++ jest wygodny, bo w Vimie można pisać tak samo wygodnie jak w IDE" mija się z celem. Po to są IDE, żeby pisało się wygodnie. A skoro są, to dlaczego ich nie używać? Tym bardziej, jeśli są to standardowe IDE od twórcy języka. ;)

- Kompilacja jest długa i nudna, bo kompilator zwykle kompiluje jeden nagłówek kilkukrotnie (konsekwencja kompilacji każdego .cpp osobno). Zmusza to programistów do przerabiania kodu, by móc przerzucić jak najwięcej #include z .h do .cpp, lub korzystania z średnio wygodnych półśrodków typu PCH.
trzeci - : albo korzystania z #pragma once lub #ifndef'ów
To trochę tak nie działa. No i przyznać trzeba - kompilacja C++ zajmuje żałośnie dużo czasu.

Offline Liosan

  • Redaktor

# Wrzesień 19, 2009, 20:51:43
Zauważ że w "nowoczesnych" językach jest tylko jedno poprawne według twórcy IDE (C#->Visual C#, Java->Netbeans) i inwestuje się grube miliony w ich rozwój.
To jest dobre. Dzięki temu produkty te są dopracowane pod każdym szczegółem. A nawet darmowe. Czego chcieć więcej? Poza tym gadka, że "C++ jest wygodny, bo w Vimie można pisać tak samo wygodnie jak w IDE" mija się z celem. Po to są IDE, żeby pisało się wygodnie. A skoro są, to dlaczego ich nie używać? Tym bardziej, jeśli są to standardowe IDE od twórcy języka. ;)
Żeby jeszcze dodać absurdalności Twojej uwadze, wine, dorzucę że od ponad roku kodzę głównie w Javie a w życiu nie odpaliłem NetBeansa :D Dobre IDE powstają do języków, które przewidziały istnienie IDE. Sorry.

Liosan

Offline MadBonsai

  • Użytkownik
    • Ifrit

# Wrzesień 19, 2009, 21:22:01
A ja kocham NetBeans i pewnie w życiu nie odpalę Eclipse. Te IDE powstały dla Javy, a radzą sobie coraz lepiej z innymi środowiskami (przynajmniej NetBeans, nie wiem jak Eclipse). Kosztują $0. Pluginy znakomicie rozszerzające funkcjonalność kosztuje $0.
Niestety C# ma już mniej szczęścia ;)

C++ istnieje od dawna - to jego główna wada i zaleta ;)

Offline arturooo3

  • Użytkownik

# Wrzesień 19, 2009, 21:57:18
Zacznę od tych zwijanych funkcji. Nie wiem jak Wy, ale u mnie w jednym z najlepszych IDE - MS Visual C++ 2008 średnio to działa. Zwijam a itak co chwilę się rozwijają :)
A uwierzcie iż klasa na 1000 linijek nie jest wygodna, gdy między 30 obiektami szukamy 40 funkcji, które nagle byłoby wszystkie w jednym module razem, brzydko nieswojo.
Naprawdę - życzę powodzenia osobom szukającym ;)
A mam na co dzień do czynienia z takimi modułami i klasami, bo kodzę także w Visual Basic 6.

IDE. No cóż.. tutaj można programistów podzielić na tych, którzy kodzą i projektantów designu. Oczywiście, łatwiej gdy wszystko na raz.. No ale czy to aż tak ważne dla programisty-kodera?
Tak czy siak można MFC zastąpić wieloma innymi dobrymi.

Jak wine napisał - dobry kod używa takiego znaczka jak "#" często, aby prekompilator sobie poukładał i nie powtarzał czytania wszystkiego. A PCH nie jest wcale takie złe ( u mnie działa dobrze, ktoś ma problemy? ).

Cytuj
Język sam w sobie żaden sposób się nie rozwija. Porównaj biblioteki standardowe Cepa i Javy.
Czy Ty wracasz do C ?  ;D ;D
Aktualizacja C++ była poprawka w 2003, aktualnie pracują nad C++0x, standard się zmienia widać to, a biblioteki itak bibliotekami.
Za chwilę Java Ci zrobi swoje całe WinApi tak? No bo.. bibliotek nie będziesz używał przecież!
Hm.. a od kiedy w Javie się robi duże gry, tak btw?

Charibo!
Cytuj
Doh. Homoseksualizm jest dobry, bo jest bardziej przejrzysty?
Nie będę komentować, ale brak argumentu daje takie skutki na "wysokim poziomie inteligencji" spod bloku.

Cytuj
Dla mnie pasja to pasja, jeśli nie muszę klepać tysięcy sloc, żeby mieć ficzer który nigdy mi się nie przyda, lub który w innym rozwiązaniu już istnieje i jest dobry. Takie rzeczy trochę mi się już nudzą. Tongue
Pisząc kod w C++ na pewno znajdziesz dużo całych darmowych gotowców i bibliotek.

Cytuj
Dla mnie nie. Dla mnie liczy się efekt. Jeśli mogę osiągnąć efekt, bez zbędnej nauki, to dlaczego nie?
Efekt jest pośrednim wynikiem. Co z tego, że wygląda super, skoro będzie pokaz slajdów miast płynnej gry?  ::)

Cytuj
No i to byłby układ idealny. Smiley Jedyną rzeczą lepszą od pisania kodu jest niepisanie kodu. Ale niestety tak się nie da :|
Tu się zgadzam. Lipa. Chyba, że zrobimy wspólnymi siłami całego GameDev profesjonalnego GameMakera? :D

Cytuj
Ok, call the shot - podaj mi trzy silniki zrobione w ten sposób, które są warte uwagi pod kątem pisania faktycznej gry, bez konieczności dopisywania toolsetów.
Co Ty masz z tą trójką?
1. Esenthel
2. Unreal Engine
3. Irrlicht ( nie wiem na jakim poziomie jest teraz ten toolset, ale niedawno nie było tak źle ).
Chyba, że lista 2d?

Cytuj
Nie mało czasu, czasu mam dużo. Ale mi go żal na bzdety (czyli pisanie zbędnego kodu). Smiley
Charibo! Zaprzeczasz sobie!

Cytuj
To jest dobre. Dzięki temu produkty te są dopracowane pod każdym szczegółem. A nawet darmowe. Czego chcieć więcej? Poza tym gadka, że "C++ jest wygodny, bo w Vimie można pisać tak samo wygodnie jak w IDE" mija się z celem. Po to są IDE, żeby pisało się wygodnie. A skoro są, to dlaczego ich nie używać? Tym bardziej, jeśli są to standardowe IDE od twórcy języka. Wink
Patrząc w drugą stronę, od góry, co Ci da, jeżeli będziesz się uczył języka ABC+++, który ma 1000 bibliotek, super IDE itd, skoro robota będzie itak najczęściej na C# albo C++ ?


Offline Liosan

  • Redaktor

# Wrzesień 19, 2009, 22:00:57
Zacznę od tych zwijanych funkcji.
Jeśli to było a propos mojego stwierdzenia, że IDE potrafi streścić listę funkcji w klasie - to miałem na myśli funkcję outline w Eclipse, a nie zwijanie.

Liosan

wine

  • Gość
# Wrzesień 19, 2009, 22:02:51
Nie wiem jak Wy, ale u mnie w jednym z najlepszych IDE - MS Visual C++ 2008 średnio to działa. Zwijam a itak co chwilę się rozwijają :)
U mnie też...  :-\

Offline Dab

  • Redaktor
    • blog

# Wrzesień 19, 2009, 22:09:25
Dla mnie największą zaletą C jest relacja 1:1 z powstałym kodem. Funkcja to po prostu funkcja, adres funkcji do miejsce gdzie ta funkcja się znajduje. Obiekt to kupka bajtów. Myśląc w C można łatwo myśleć jak procesor. A C++? To przecież tylko parę dodatków do C, żeby było o czym gadać na rozmowie o pracę. ;)

Offline MadBonsai

  • Użytkownik
    • Ifrit

# Wrzesień 19, 2009, 23:09:47
@arturoo
Wystarczy nauczyć się szukać. Klasa na 1000 linijek jest wygodniejsza do przeszukania z Intellisense niż 10 klas na 100 linijek. Wystarczy, że ta klasa jest schludnie zaprojektowana. Jeśli programista nie ma pojęcia o czytelnym pisaniu kodu, to pewnie że klasa na 1000 linijek będzie bałaganem.
Zresztą, o czym my gadamy, co to jest klasa na 1000 linijek?

I co ty się tak czepiasz tych dużych gier? Ilość programistów tworzących gry w językach innych niż C++ rośnie niesamowicie szybko. Platformy mobilne, webowe to jest już olbrzymi rynek. Zdajesz sobie sprawę, że w Stanach powstają już studia tworzące jedynie gry na... Facebooka? Czy te gry są gorsze, bo inne?

Poza tym Techland korzystał z Javy dość mocno w Chrome Engine. Zmieniło się to, gdy zaczęli tworzyć również na konsole.
http://forum.warsztat.gd/index.php/topic,6430.msg94794.html#msg94794
I jakoś nie narzekali. To tylko przykład z naszego małego podwórka, przykłady inne sam możesz znaleźć goglując.

Dla każdego języka znajdziesz sporo frikowych komponentów. Widzę, że zagłębiłeś się już w C++ i lubisz go. Fajnie, ale daj oddychać. To, że w C++ dostępna jest masa bibliotek, wie każdy. Tak jak o dostępności bibliotek dla C, C#, Javy, JavaScriptu, PHP, AS, ...., [plus nieskończoność].

Offline Charibo

  • Redaktor

# Wrzesień 19, 2009, 23:49:05
Zacznę od tych zwijanych funkcji. Nie wiem jak Wy, ale u mnie w jednym z najlepszych IDE - MS Visual C++ 2008 średnio to działa. Zwijam a itak co chwilę się rozwijają :)
A uwierzcie iż klasa na 1000 linijek nie jest wygodna, gdy między 30 obiektami szukamy 40 funkcji, które nagle byłoby wszystkie w jednym module razem, brzydko nieswojo.
Naprawdę - życzę powodzenia osobom szukającym ;)
A mam na co dzień do czynienia z takimi modułami i klasami, bo kodzę także w Visual Basic 6.
RockScroll + VA:X, a jak nie to Class View z czystego Visuala. I już życie jest proste. ;)


Hm.. a od kiedy w Javie się robi duże gry, tak btw?
Ile dużych gier stworzyłeś? Ja nie stworzyłem żadnej dużej gry. I sam nie dam rady, zdaję sobię sprawę. Więc zupełnie nie mam kłopotów z poświeceniem tych 8, czy ilu, procent wydajności. ;)

Cytuj
Dla mnie nie. Dla mnie liczy się efekt. Jeśli mogę osiągnąć efekt, bez zbędnej nauki, to dlaczego nie?
Efekt jest pośrednim wynikiem. Co z tego, że wygląda super, skoro będzie pokaz slajdów miast płynnej gry?  ::)
Serio nie da rady wytłumaczyć prościej? To może obrazkiem:
DUŻA GRA versus MAŁA GRA.
Teraz jak mówię - skoro robię Małą Grę, co mi robi kilkanaście procent wydajności? -_-

Cytuj
Ok, call the shot - podaj mi trzy silniki zrobione w ten sposób, które są warte uwagi pod kątem pisania faktycznej gry, bez konieczności dopisywania toolsetów.
Co Ty masz z tą trójką?
1. Esenthel
2. Unreal Engine
3. Irrlicht ( nie wiem na jakim poziomie jest teraz ten toolset, ale niedawno nie było tak źle ).
Unreal i Irrlicht nie są robione amatorsko (znaczy po godzinach). A Esenthel nadal nie jest zbyt znany (co nie zmienia faktu, że faktycznie jest dobry. Ok, jeden przykład podałeś). ;)

Cytuj
To jest dobre. Dzięki temu produkty te są dopracowane pod każdym szczegółem. A nawet darmowe. Czego chcieć więcej? Poza tym gadka, że "C++ jest wygodny, bo w Vimie można pisać tak samo wygodnie jak w IDE" mija się z celem. Po to są IDE, żeby pisało się wygodnie. A skoro są, to dlaczego ich nie używać? Tym bardziej, jeśli są to standardowe IDE od twórcy języka. Wink
Patrząc w drugą stronę, od góry, co Ci da, jeżeli będziesz się uczył języka ABC+++, który ma 1000 bibliotek, super IDE itd, skoro robota będzie itak najczęściej na C# albo C++ ?
Ej, halo, co oznacza "robota będzie"? Jeśli rozwiążę problem ABC+++ w 8k sloc, zamiast w 15 w innym języku, to wybiorę ABC+++. Jeśli ABC+++ z jakiegoś powodu będzie ssał, to wybiorę coś innego. Zero filozofii.

Offline Liosan

  • Redaktor

# Wrzesień 20, 2009, 00:02:57
Patrząc w drugą stronę, od góry, co Ci da, jeżeli będziesz się uczył języka ABC+++, który ma 1000 bibliotek, super IDE itd, skoro robota będzie itak najczęściej na C# albo C++ ?
Ej, halo, co oznacza "robota będzie"? Jeśli rozwiążę problem ABC+++ w 8k sloc, zamiast w 15 w innym języku, to wybiorę ABC+++. Jeśli ABC+++ z jakiegoś powodu będzie ssał, to wybiorę coś innego. Zero filozofii.
Mało jesteś skażony korporacyjnym światem, co ? :) Nie zawsze wybór należy do Ciebie - acz akurat w gamedev pod tym względem jest fajny ;)

Liosan

Offline arturooo3

  • Użytkownik

# Wrzesień 20, 2009, 00:29:41
Mam na myśli pracę. Tam zazwyczaj wymagają C++ / C#. Javę owszem, ale na telefony.
Drugi amatorski to może być nGene.

Offline Charibo

  • Redaktor

# Wrzesień 20, 2009, 00:40:06
Patrząc w drugą stronę, od góry, co Ci da, jeżeli będziesz się uczył języka ABC+++, który ma 1000 bibliotek, super IDE itd, skoro robota będzie itak najczęściej na C# albo C++ ?
Ej, halo, co oznacza "robota będzie"? Jeśli rozwiążę problem ABC+++ w 8k sloc, zamiast w 15 w innym języku, to wybiorę ABC+++. Jeśli ABC+++ z jakiegoś powodu będzie ssał, to wybiorę coś innego. Zero filozofii.
Mało jesteś skażony korporacyjnym światem, co ? :) Nie zawsze wybór należy do Ciebie - acz akurat w gamedev pod tym względem jest fajny ;)

Liosan
Inaczej - ja cały czas mówię o sobie i o mojej robocie. Zdaję sobie sprawę, że w pracy będzie inaczej - ale w pracy nie będę pracował dla własnej frajdy. ;)

Mam na myśli pracę. Tam zazwyczaj wymagają C++ / C#. Javę owszem, ale na telefony.
Drugi amatorski to może być nGene.
Teraz się tłumaczysz. Od początku rozmawialiśmy o amatorskich projektach gier. ;) A nGENE afaik jeszcze nie jest w fazie productive/stable. ;)

Offline MadBonsai

  • Użytkownik
    • Ifrit

# Wrzesień 20, 2009, 01:30:30
Mam na myśli pracę. Tam zazwyczaj wymagają C++ / C#. Javę owszem, ale na telefony.
Drugi amatorski to może być nGene.

Phi. Akurat ta brzydka Java byłaby świetną alternatywą dla silnika 2D amatorskiej gry.