Czy C # ma przyszłość w rozwoju gier?


18

Niedawno dowiedziałem się, że MMO Minecraft jest oparty na Javie z ostatniego wywiadu na CVG.co.uk na temat możliwej współpracy między dwoma byłymi i obecnie konkurującymi ze sobą kolegami. W wywiadzie otwarcie powiedział, że założyciel Minecraft jest programistą Java i jest programistą C lub C ++, więc są ze sobą niekompatybilni. Współpraca przy przyszłych projektach będzie trudna.

To sprawiło, że pomyślałem, czy Java mogłaby to zrobić? Co przyniesie przyszłość bardzo popularnemu językowi C # i platformie .Net, jeśli chodzi o gry lub główny nurt gier?



3
Chodzi o wydajność, której potrzebujesz, Minecraft jest w porządku w zarządzanym języku, ale w przypadku wysokiej klasy gier graficznych preferowane są C lub C ++ lub inne języki tubylcze

19
Minecraft nie jest tak naprawdę MMO.
— DeadMG,

3
@ Guillaume86: Jittered kod może obecnie przewyższać kod natywny, a Jits jest coraz lepszy. Ponadto języki zarządzane zapewniają znacznie bardziej niezawodne programy. Ostatecznie C ++ traci przewagę wydajności i znacznie trudniej jest pisać solidne programy (co oznacza dłuższy czas programowania i większe koszty)
— Martin

4
JIT może pobić słabo napisany kod natywny, a nie ściśle zoptymalizowane i dostrojone wewnętrzne pętle. Oczywiście, nawet w języku C # masz możliwość pisania wrażliwych segmentów w C / C ++, jeśli naprawdę tego chcesz.
— coderanger

Odpowiedzi:


22

Powinieneś sprawdzić XNA . Platforma do tworzenia gier dla systemów Windows, Xbox 360 i Windows Mobile 7. Wszystko w języku C # i .NET.


11

Pracuję nad profesjonalnym tworzeniem gier od ponad 5 lat. Przez większość czasu używałem C # prawie wyłącznie.

Stosunki C # i .NET są naprawdę świetne dla technologii po stronie serwera. Pracowałem nad nie mniej niż 4 grami MMO z serwerem napisanym w języku C #. Ponadto, gdy Unity3D zyskuje na popularności, wiele gier przeglądarkowych i mobilnych wymaga C #. Nie zapomnij o frameworku XNA: nie jest to silnik wybierany do tytułów konsolowych AAA, ale powstało wiele świetnych gier z nim związanych i wiele innych jest w trakcie tworzenia.

Ogólnie rzecz biorąc, C # zdecydowanie ma przyszłość w rozwoju gier.


to stare pytanie, ale jedno mnie martwi. „technika po stronie serwera” - co dokładnie przez to rozumiesz? WindowsService działający na niektórych systemach Windows Server przy użyciu .NET Framework? Zawsze myślałem, że serwery są wykonane w c ++ i działają na systemie UNIX. Byłem po prostu ciekawy
— Marshall,

Tak, dokładnie to. Istnieje wiele serwerów działających w systemie Windows - w tym te, które obsługują tę samą witrynę, AFAIK.
— Nevermind,

Dziękuję, że do mnie wróciłeś. Żeby wyjaśnić - „działa w systemie Windows” jako bezgłowe usługi systemu Windows lub programy takie jak WinForm (z wbudowaną konfiguracją czy coś takiego)?
— Marshall,

Usługa bezgłowa jest zwykle lepszym pomysłem, ale nic nie powstrzymuje Cię przed uruchomieniem aplikacji konsoli. Lub nawet GUI, z tym wyjątkiem, że na serwerze nie ma nikogo, kto mógłby użyć tego GUI.
— Nevermind,

10

Jak wspomniano, Mono przenosi C # na wiele platform. W tym samym obszarze znajdziesz Tao , wieloplatformową bibliotekę dla Mono i .NET, która umożliwia dostęp do Cg, DevIL, FreeGLUT, GLFW, GLU, ODE, OpenAl, OpenGL, PhysicsFS, SDL i WGL. Oczywiście nie jest tak niezawodny, jeśli chodzi o funkcje jak XNA (który zapewnia podstawowe komponenty silnika bezpośrednio deweloperowi); ale ma mnóstwo mocy.

Tak więc zdecydowanie możliwa jest współpraca między platformami poza systemem operacyjnym i sprzętem kontrolowanym przez Microsoft. Tylko nie tak wiele popularnych gier niezależnych wykorzystało tę umiejętność.

Jak już wspomniano, XNA w połączeniu z C # pozwala niezależnym programistom publikować na urządzeniach 360, PC i Windows Phone 7.

Ogólnie rzecz biorąc, C # żyje i dobrze rozwija się w grze jako język silnika / gry.

Jako język narzędzi jest używany wszędzie. Zbudowałem narzędzia dla EA, THQ, a teraz Arkadium, wszystkie używając C #.


5

C # ma nie tylko przyszłość w rozwoju gier, ale ma też prezent - sprawdź Magicka , niedawno wydaną (i dobrze sprzedającą się) grę, która została opracowana przy użyciu XNA. Zobacz także zwycięskie wpisy Dream.Build.Play . C # to realny sposób na tworzenie gier (chociaż w tej chwili nie sądzę, że jest to właściwy wybór dla wszystkich gier).

Z biegiem czasu zauważymy, że będzie on coraz bardziej popularny w branży gier komputerowych, jednak nie spodziewam się nagłej zmiany na C # w żadnym momencie.


4

Java zawsze była bardzo wszechstronnym językiem i od zawsze istniała możliwość kodowania w niej gier, od prostych gier internetowych (aplety Java / GWT z wtyczką canvas) do bestii 3D (kasy JMonkey ). Więc nie powiedziałbym, że fakt, że Java potrafi to zrobić, jest zabójcą C #, ponieważ większość ludzi wie, że Java już to potrafi.

C # nadal pozostanie popularny, ponieważ nieuchronnie łączy się z Windows, Windows Mobile i Xbox znacznie lepiej niż Java (co tak naprawdę wszyscy twórcy gier naprawdę dbają o targetowanie, więc przewaga między platformami, którą Java została w większości utracona). także XNA, który naprawdę wystartował pod względem rozwoju gier.

Tak, Java jest doskonałą platformą do tworzenia gier, jeśli ktoś chce pójść tą drogą, ale z pewnością nie jest to C # ani .NET Killer.


4

Sprawdź Unity 3D; Skrypty C # (i JavaScript oraz Boo) w wysoko wydajnym silniku 3D.

Dodaj XNA do miksu, a zobaczysz kilka świetnych platform do używania C # do tworzenia gier.


Unity ma również odtwarzacz internetowy, dzięki czemu możesz grać w przeglądarce. Wtyczka nie ma tak dużej penetracji rynku jak Flash czy Java, ale jest to możliwe.
— Michael Coleman

tak dla jedności !!
— Daniel Pendergast

1

Tak, C # ma przyszłość z frameworkiem XNA. Większość woli C ++ ze względu na szybkość, ale C # nie jest już tak wolny ...


2
To wcale nie jest wolne. Rzadko jest gorszy niż około 70% prędkości C ++, a czasem może być nawet szybszy!
— Noldorin

4
Operacje związane z procesorem w języku C # są dość szybkie, dokonuje się dodatkowej kontroli, która znacznie poprawia bezpieczeństwo kodu kosztem niewielkich spadków wydajności, ale tam, gdzie jest znacznie gorzej niż w C ++ pod względem zużycia pamięci i zarządzania. Jest to o wiele łatwiejsze i mniej podatne na wyciek w C #, ale wyniki GC w osiągach mogą być absolutnym psem.
— justin.m. chase

Uważaj jednak, gdy celujesz w Xbox360. Środowisko wykonawcze XNA tam nie ma możliwości niektórych głównych optymalizacji i uniemożliwia przejście części wrażliwych na wydajność do niezarządzanego kodu.
— drxzcl


1

To, co zrobił z Javą w tym przypadku, to stworzenie apletu, dzięki czemu można było po prostu zalogować się na stronie i grać przy użyciu bardzo popularnej wtyczki, całkowicie niewidocznej dla systemu operacyjnego. Wyobrażam sobie, że jego myślenie było takie, że Java była dość przejrzysta, kiedy była używana w ten sposób, i ułatwiłoby to szybkie iteracyjne tworzenie / testowanie, które nakłaniał fanów do zrobienia. Nie sądzę, że możesz to zrobić za pomocą XNA, ponieważ zwykle tester musi mieć wszystko zainstalowane, a także grę i trochę ogólnej wiedzy na temat tego, jak to skompilować i uruchomić.

Powiedziałbym więc, że nie ma zmiany paradygmatu w stosunku do tego, po prostu odpowiadało to, czego potrzebował w tym czasie i oczywiście dobrze działało.


1

Jasne, wiele języków programowania ma przyszłość w rozwoju gier. Często stosowanym fałszywym dylematem stosowanym w prasie komputerowej jest to, że może istnieć tylko jedno narzędzie typu X i wszyscy chcą, aby tak się stało.

Nic nie może być dalej od prawdy.

C # i Java są używane w grach od dawna. C i C ++ mają jeszcze dłużej i nadal są. Lua jest używany jako język skryptowy w niektórych niezwykle popularnych grach, z silnikiem napisanym w C / C ++.

Tak wyraźnie, żaden język programowania nie wydobywa z wody innych języków programowania, jak The Game Programming Language. W rzeczywistości widzimy tendencję do tego, aby wiodące gry składały się z kompilowanego języka programowania o wysokiej wydajności do rozwijania silnika (ów) w., A następnie z dynamicznego języka programowania wyższego poziomu do skryptowania zachowania interfejsu użytkownika i innych rzeczy.

Kluczem w tej chwili jest wydajność. Jeśli którykolwiek z używanych języków programowania / bibliotek spowoduje nieprzewidywalne / niekontrolowane przerwy w aplikacji, to w grze akcji, która upadnie na twarz. W tekstowej grze przygodowej może to jednak być w porządku.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.