Autor Wątek: jak to wlasciwie jest z tymi konsolami...?  (Przeczytany 14503 razy)

Offline Złośliwiec

  • Użytkownik
    • Dark Cult

# Luty 21, 2008, 00:50:45
No właśnie, byty. Ale nowej klasy nie stworzysz

A po co? Edytor z założenia służy do wstawiania obiektów predefiniowanych klas. Chyba nie oczekujesz, że użytkownicy będą tworzyć za pomocą edytora coś, czego sami twórcy gry nie przewidzieli? Takie jajka mądrzejsze od kury? :D

Offline Mr. Spam

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

Offline vashpan

  • Użytkownik
    • Strona

# Luty 21, 2008, 01:02:39
vashpan: No... a widział edytor Crisis'a w akcji? Oni musieli to ręcznie oskryptować aby można było dynamicznie tworzyć byty. A w takim .net można dynamicznie stworzyć wszystko... czy wywołać ręcznie opcode'y. Jeśli chodzi o to - twoje ukochane C jest 20 lat za całą resztą. :) Lubię C, ale nie lubię wszczynania bezsensownego flame'a. :)
Niepowodzenie C# na rynku gier komercyjnych raczej nie ma źródła w używaniu przezeń "maszyny wirtualnej".

???? Sory ale nie chcialem wszczynac zadnego flame'a, zreszta nie pisalem o C, bo w C sie gier przewaznie nie pisze, a w C++. Ja mysle ze niepowodzenie C# na rynku gier jest spowodowane z kilku powodow:

- Przyzwyczajenie deweloperow i mnostwo podstawowych narzedzi jak silniki i biblioteki napisane dla jezyka C++.

- Mimo wszystko maszyna wirtualna, i to nie ze wzgledu na sama wydajnosc, ale ze wzgledu na zuzycie pamieci. Nawet w obecnych czasach '4 GB', lepiej przeznaczyc dodatkowe 100 MB na ladniejsze tekstury niz na dzialalnosc srodowiska.

- Paradoksalnie zdecydowanie wieksza przenosnosc kodu w C++ niz w C# ( i chodzi mi o konsole a nie o komputery ). No i jezeli jestesmy przy konsolach wlasnie... W konsolowych mainstreamowych produkcjach nie ma zreszta sensu cos takiego jak C# czy Java, bo kod gry jest i tak optymalizowany przy kompilacji najbardziej jak sie da, pod platforme. Poza tym korzysta sie z niskopoziomowych konstrukcji i optymalizacji. Pomijam XNA, bo XNA nie jest stworzone do mainstreamowych produkcji.

Offline Krzysiek K.

  • Moderator
    • DevKK.net

# Luty 21, 2008, 01:13:58
Cytuj
Chyba nie oczekujesz, że użytkownicy będą tworzyć za pomocą edytora coś, czego sami twórcy gry nie przewidzieli? Takie jajka mądrzejsze od kury? :D
Chyba nie oczekujesz, że twórcy silnika przewidzą wszystko, co będą chcieli użytkownicy stworzyć?

Offline Esidar

  • Użytkownik

# Luty 21, 2008, 01:38:36
A po co? Edytor z założenia służy do wstawiania obiektów predefiniowanych klas. Chyba nie oczekujesz, że użytkownicy będą tworzyć za pomocą edytora coś, czego sami twórcy gry nie przewidzieli? Takie jajka mądrzejsze od kury? :D

To właśnie umożliwiają współczesne edytory. Zauważ, że twórcami edytora są programiści, a użytkownikami w 90% przypadków są game designerzy. I oni bardzo często tworzą coś czego "twórcy" nie przewidzieli. A na im większą elastyczność im edytor pozwoli, tym łatwiej designerom puścić wodze fantazji i tym bardziej zaskakujący efekt.


maxest

  • Gość
# Luty 21, 2008, 02:06:05
A po co? Edytor z założenia służy do wstawiania obiektów predefiniowanych klas. Chyba nie oczekujesz, że użytkownicy będą tworzyć za pomocą edytora coś, czego sami twórcy gry nie przewidzieli? Takie jajka mądrzejsze od kury? :D
Bardzo śmieszne porównanie.  :)
Aczkolwiek...
Dla ścisłości - ja mówię o wszystkich użytkownikach ew. edytora i silnika. Z resztą to standard, rozbudowywanie komercyjnych silników przez użytkowników/klientów.

To jest jakieś dziwne założenie że edytor korzysta z predefiniowanych klas, takie odgórne ograniczenie które sobie stawiamy. Jak możemy więcej i się opłaca... to po co.
Naprawdę radzę ci: zobacz ten filmik z dema silnika/edytora. :)
Dynamika w tej branży istnieje od dawna, tyle że na skryptach. Predefiniujemy funkcje - kompilujemy, a potem ją wywołujemy za pomocą skryptu. W lepszych skryptach możemy już sobie definiować klasy. No ale to skrypty, skrypty, skrypty - wyższa warstwa abstrakcji (maszyna wirtualna też, tak swoją drogą). Do maszynowych opcode'ów ma się jak motyka do słońca. :)


vashpan: Dlatego przy "flameowaniu" był uśmieszek... może te "bezsensownego" taki władczy ton wprowadziło mhihi...
A ja uważam że C# jest za mało rewolucyjny. Brak bibliotek z danej dziedziny uważam że półargument, przytaczany wielokrotnie, przez wszystkich. Uważam że gdyby C# naprawdę niósł rewolucję ze sobą, to każdy na wpół rozgarnięty programista byłby w stanie zwrappować potrzebną bibliotekę w C. Lwia część gier to zazwyczaj produkcje oparte własnych silnikach które śmiało mogłyby być tworzone w jakimś dowolnym języku. Suma sumarum C# jest lepszym środowiskiem niż C++, ale jest za mało atrakcyjny, zbyt się różni. Gdyby był czystym następcą C++, przyjął by się. Gdyby był naprawdę wytrepany, przyjął by się. A ponieważ zbyt sie różni od starego, a za mało dobrego wprowadza to mało kto go rusza.
Zazwyczaj ludzie są przeciwni zmianom. Chyba że nowy stan jest uważany za błogosławieństwo, albo zmiany są tanie i wyglądają na przydatne/potrzebne.

Znowu sie rozpisałem... ehh.


« Ostatnia zmiana: Luty 21, 2008, 02:07:43 wysłana przez RageX »

maxest

  • Gość
# Luty 21, 2008, 11:24:53
Imho C# jest tak skonstruowany ze ciezko w nim zrobic proste rzeczy prostym sposobem :). Jakis czas temu potrzebowalem sparsowac sobie plik. W C/C++ to slicznie bez problemu sscanf i filtruje co mi potrzeba, a zeby zrobic taki odpowiednik sscanf w C# trzeba bylo wklepac taki mniej wiecej kod:
                        s = streamReader.ReadLine();

                        char[] buffer = new char[s.Length];
                        string[] values = new string[5];

                        StringReader stringReader = new StringReader(s);
                        stringReader.Read(buffer, 0, s.Length);

                        foreach (char c in buffer)
                        {
                            if (Char.IsWhiteSpace(c) == true)
                                stringIndex++;
                            else
                                values[stringIndex] += c;
                        }
Nie wiem, moze da sie to zrobic prosciej, ale nie znalazlem w necie nic sensowniejszego

Offline Esidar

  • Użytkownik

# Luty 21, 2008, 11:55:29
Nie wiem, moze da sie to zrobic prosciej, ale nie znalazlem w necie nic sensowniejszego
A co chcesz osiągnąć ? Wyciąć whitespace między wartościami ?
string[] values = s.Split( new char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries );

"Wadą" C# i .NET jest to że trzeba się go nauczyć :) Ja go używam dość długo (2-3 lata) a pewnie nie znam 80% najprostrzych nawet operacji.
« Ostatnia zmiana: Luty 21, 2008, 11:57:04 wysłana przez Esidar »

Offline Zene

  • Użytkownik
    • Zenedith’s dev blog

# Luty 21, 2008, 12:18:23
A po co? Edytor z założenia służy do wstawiania obiektów predefiniowanych klas. Chyba nie oczekujesz, że użytkownicy będą tworzyć za pomocą edytora coś, czego sami twórcy gry nie przewidzieli? Takie jajka mądrzejsze od kury? :D

To właśnie umożliwiają współczesne edytory. Zauważ, że twórcami edytora są programiści, a użytkownikami w 90% przypadków są game designerzy. I oni bardzo często tworzą coś czego "twórcy" nie przewidzieli. A na im większą elastyczność im edytor pozwoli, tym łatwiej designerom puścić wodze fantazji i tym bardziej zaskakujący efekt.


Absolutna prawda.
Dlatego przy konstrukcji engine'u warto postawić na elastyczność - najlepszym rozwiązaniem wg. mnie jest tworzenie modułów użytkowych (dość małych), natomiast edytor powinien odgrywać rolę spoiwa tych elementów, z zapisywaniem tak skonfigurowanych bytów jako "wzorców" do ponownego użycia w edytorze.
Napewno nie jest jesteśmy w stanie wszystkiego przewidzieć jako programiści, ale stworzenie jak najmniej zależnych od siebie modułów oraz zarządzania nimi w takim bycie, powinno bardzo dużo ułatwić.

Offline counterClockWise

  • Użytkownik

# Luty 21, 2008, 12:56:18
Imho C# jest tak skonstruowany ze ciezko w nim zrobic proste rzeczy prostym sposobem :). Jakis czas temu potrzebowalem sparsowac sobie plik. W C/C++ to slicznie bez problemu sscanf i filtruje co mi potrzeba, a zeby zrobic taki odpowiednik sscanf w C# trzeba bylo wklepac taki mniej wiecej kod:

Absolutnie się nie zgadzam. Moja definicja jest odwrotna - w C# i .NET proste rzeczy łatwo zrobić prostym sposobem - jest takie wsparcie .NETa.
W szczególności sprawy związane z parsowaniem, serializacją itp, wiec Twój przykład dziwi mnie ogromnie :)

                        s = streamReader.ReadLine();

                        char[] buffer = new char[s.Length];
                        string[] values = new string[5];

                        StringReader stringReader = new StringReader(s);
                        stringReader.Read(buffer, 0, s.Length);

                        foreach (char c in buffer)
                        {
                            if (Char.IsWhiteSpace(c) == true)
                                stringIndex++;
                            else
                                values[stringIndex] += c;
                        }
Nie wiem, moze da sie to zrobic prosciej, ale nie znalazlem w necie nic sensowniejszego

Żeby korzystać w sposób prosty i wygodny z języka trzeba go znać. Ty nie znasz :)

maxest

  • Gość
# Luty 21, 2008, 16:10:28
Cytuj
Żeby korzystać w sposób prosty i wygodny z języka trzeba go znać. Ty nie znasz
Prawda, w C# w zasadzie jeden konkretniejszy program tylko napisalem :P

Cytuj
A co chcesz osiągnąć ? Wyciąć whitespace między wartościami ?
Chce zaimplementowac zwyklego sscanf'a z C :). Konkretnie to w tamtym przypadku chodzilo o cos takiego, ze mam np. linijke:
A   B   C   123   456   789   D   E   F
i chce z niej wydobyc 123, 456 i 789 jako int'y/float'y. Przy uzyciu sscanf'a to oczywiscie banalne, a w C# ciezko mi bylo znalezc jakies konkretniejsze rozwiazanie niz to, ktore przedstawilem. Pewnie po czesci ma to zwiazek z tym co napisal counterClockWise - nie znam jezyka ;). Ale tez mimo wszystko taki np. C to jezyk imho prosty, majacy naprawde niewiele funkcji, a przy uzyciu tychze funkcji mozna zdzialac mnostwo rzeczy, przez co staja sie one bardziej "uniwersalne". Z kolei C# zdaje sie miec takie podejscie, ze czesto jedno rozwiazanie wiaze sie z jedna oddzielna funkcja. Takie przynajmniej odnosze wrazenie po moich malych starciach z C#
Btw: kod, ktory podalem, to przerobiona wersja kodu ze strony http://forums.devshed.com/c-programming-42/parsers-and-sscanf-in-c-384435.html

Offline Pawlos

  • Użytkownik

# Luty 22, 2008, 00:43:20
Programowałem trochę w c# i według mnie jest o wiele prostszy od c/c++. W .NET Frameworku jest praktycznie wszystko, do tego managed DirectX albo XNA (z użyciem którego można pisać na xbox'a  :)) i w prosty sposób możesz napisać jakąś gre :P
Tylko najgorsze w c# jest to, że jest zarządzany... jakby ci ktoś ciągle na ręce patrzył i nie możesz nic nabroić  :(

Offline yarpen

  • Użytkownik

# Luty 22, 2008, 00:50:06

Offline revo

  • Użytkownik

# Luty 22, 2008, 00:56:42
Sony poszlo po rozum do glowy, lepiej pozno niz wcale -- http://www.joystiq.com/2008/02/21/gdc08-phyreengine-sonys-new-free-cross-platform-engine/

Wow, jestem pod wielkim wrażeniem. Tego się po nich nie spodziewałem ;)

maxest

  • Gość
# Luty 22, 2008, 01:18:13
To musialo w koncu nastac :). Nie wiem jak sytuacja wyglada na zachodzie, ale np. w Polsce ciezko jest kupic gre na PS3... Idac do Empiku widze mnostwo tytulow na PC (swoja droga czesto z dopiskiem "for Windows Vista" ;)) i na Xbox'a 360, ale na PS3 naprawde jest ciezko cos znalezc. Moze teraz to sie zmieni :]

Offline Esidar

  • Użytkownik

# Luty 22, 2008, 01:29:29
Sony poszlo po rozum do glowy, lepiej pozno niz wcale

W pierwszej chwili pomyślałem "about f.. time", ale się zorientowałem że nigdzie nie jest powiedziane, że "darmowy" oznacza "dający możliwość pisania gier homebrew na PS3".

Czyli to nie jest XNA dla community, tylko silnik od Sony na PS3 (i Xbox/PC) dla licencjonowanych developerów. Zwłaszcza, że jednym z punktów na prezentacji jest że "działa na PS3 debug system" (czyli na pół-devkicie przeznaczonym dla QA).
« Ostatnia zmiana: Luty 22, 2008, 01:34:56 wysłana przez Esidar »