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?

chaos
źródło
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.


źródło
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.

Nieważne
źródło
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 #.

AA Grapsas
źródło
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.

CiscoIPPhone
źródło
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.


źródło
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.

chrish
źródło
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 ...

GoofyHTS
źródło
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

Również - MonoDroid może być opcją dla C #.

Marc Gravell
źródło
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.

Douglas Rae
źródł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.

JohnnySoftware
źródło