Najlepszy język do gamedev?

Najlepszy język do gamedev?
X3
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 10 lat
  • Postów:53
0

Witam,

Potrafię już trochę z Pythona i C++. Aktualnie uczę się C++.
Czy ktoś mógłby podać najlepsze języki do gamedev? Zastanawiałem się nad C#, czy C# byłby odpowiedni do pisania gier w jakichś silnikach. Chciałbym pisać gry na Windowsa oraz Androida.

KR
  • Rejestracja:prawie 16 lat
  • Ostatnio:5 miesięcy
  • Postów:2514
0

Nie ma czegos takiego jak najlepszy jezyk do czegos. Najlepsze jest to co pozwoli Ci uzyskac dobry efekt przy najmniejszym wysilku, nawet jesli jest to jakis game maker w ktorym wszystko przeklikujesz. Zamiast szukac w jakim jezyku poszukaj lepiej w czym sie najlatwiej / najszybciej robi gry (najlepiej szukaj o konkretnym typie gry ktory chcesz zrobic).

Co do jezykow to wiekszosc jezykow jest prawie identyczna, takze jesli nauczysz sie dowolnego jezyka w takim stopniu ze zrozumiesz obiektowosc to praktycznie kazdego podobnego jezyka jestes w stanie nauczyc sie w ciagu kilku dni (moze bez znajomosci bibliotek, ale to jest wszystko w internecie i mozesz szukac uzywajac analogi do innego jezyka np. "jaki jest odpowiednik C++-owego vectora w Javie").


░█░█░█░█░█░█░█░█░█░█░█░
edytowany 2x, ostatnio: krwq
spartanPAGE
  • Rejestracja:prawie 12 lat
  • Ostatnio:3 dni
0

Profesjonalnie prawie zawsze wygląda to tak:

  • Silnik napisany w C++ mała szansa na coś innego
  • Język skryptowy wykorzystujący api silnika.

Sierawno, koniec końców najczęściej używana okazuje się być lua, python i javascript.

Pewnym odchyleniem w tej sprawie jest Unity i Godot, który bazuje na języku pythonopodobnym.

hauleth
Ej… człowiek się katuje pracując nad silnikiem https://github.com/PistonDevelopers, a potem słyszy, że tylko C++ :( Smutłem, idę się ciąć stołem po twarzy. Choć to chyba raczej zasługa @xmisi3g
spartanPAGE
Profesjonalnie - nie mówię tu o wykonaniu, a o użyciu; Rust jest jako tako świeżynką, ale chętnie rzucę okiem na cokolwiek poważniejszego w tymże języku ;)
hauleth
Jest "świeżynką" jeśli chodzi o wersje stabilne. Jeśli chodzi o rozwój, to jest jeden z najdłużej rozwijających się języków (5 lat, Clojure, które jest uznawane za długo powstający język, powstało w 3 lata).
spartanPAGE
fakt; Jeszcze dać trochę czasu aż wykreują się porządne narzędzia i można używać;)
hauleth
Biblioteki, bo z narzędzi to brakuje mi tylko rustfmt, ale praca w toku (jedyny problem to, że libsyntax jest cały czas unstable, a to by znacznie pomogło z narzędziami).
X3
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 10 lat
  • Postów:53
0

A warto się uczyć C#, znając tylko podstawy C++? W ogóle, czy C# ma przyszłość?
I ja taki niewtajemniczony: czy da się pisać w C# na linuxie?

KR
Powoli nad tym pracujemy, tak samo na OSX: https://github.com/dotnet/corefx . Z tego co slysze zaczyna powoli dzialac.
spartanPAGE
  • Rejestracja:prawie 12 lat
  • Ostatnio:3 dni
0
xmisi3g napisał(a):

A warto się uczyć C#, znając tylko podstawy C++? W ogóle, czy C# ma przyszłość?
I ja taki niewtajemniczony: czy da się pisać w C# na linuxie?

  1. Jeden z najpopularniejszych i najprężniej rozwijających się języków; Kto wie...
  2. Da się, wraz z mono1

1- lub z oficjalnym .netem, który powolutku staje się opensource

X3
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 10 lat
  • Postów:53
0

Czyli zabrać się za C#, czy nadal uczyć się C++?

spartanPAGE
  • Rejestracja:prawie 12 lat
  • Ostatnio:3 dni
0

Z twoim obecnym poziomem wtajemniczenia to w ogóle nie jest ważne czego będziesz się uczył.
Samo przejście nie będzie zbyt przyjemne, ponieważ - w przeciwieństwie do relacji z pythonem i javascriptem -
C++ nie jest naturalnym "przyjacielem" C#.

Właściwie to ucz się scali.

edytowany 5x, ostatnio: spartanPAGE
Zobacz pozostałe 7 komentarzy
n0name_l
@spartanPAGE Ale polecanie jej początkującym to szaleństwo na miarę polecania im C++. :|
spartanPAGE
Cytując @Koziołek próg wejściowy scali jest podobny do progu wejściowego javy
spartanPAGE
@n0name_l moim osobistym zdaniem i tak i tak naprodukuje się gównianego kodu, a tak przynajmniej pouczy się chłopak czegoś ciekawego, skoro jak działa program już wie :P (bazując na Potrafię już trochę z Pythona i C++)
n0name_l
Moim zdaniem jak już liznął 2 języki to niech wybierze sobie któryś i nauczy się programować, na dziwactwa typu scala będzie miał jeszcze czas.
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 19 godzin
1

Ale co niby tym C# zawojujesz? Proste gierki na Androida klepie się w Javie, a duże gry na Windowsa robi się głównie korzystając z gotowych silników w C++ (no chyba, że trafisz do firmy, która robi silniki gier w C++, ale to już raczej trudno).

Z drugiej strony, żeby np pracować jako programista przy grach 3D pasuje najpierw wiedzieć jak się generuje grafikę 3D (czyli zarządzanie zasobami, generowanie efektów, obsługa karty graficznej, kopanie się z API, itd), a to można zrobić pisząc w dowolnym popularnym języku (bo w niepopularnym dodatkowo kopiesz się z integracją platformy programistycznej z API i sterownikami karty graficznej).


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:11 miesięcy
0

W "tradycyjnym"/"dużym" gamedevie (PC, konsole) króluje C++ w silnikach, C# w toolsetach (narzędzia), lua jako skryptowy / logika gry (ale kawałek po kawałku C# też ten tort zabiera).
W mobilnym i "małym" (część indie) jest większa różnorodność z pythonami, javascriptami i tak dalej.

Sądzę, że znajomość C# w perspektywie 5 lat będzie bardzo pożądana (do Unity przekonały się już największe studia, a C# wkracza również do Unreal Engine). Zwłaszcza z rozwojem natywnej kompilacji (do tej pory używany był tylko kompilator AOT Mono, a teraz dojdzie il2cpp Unity oraz .NET Native Microsoftu).

@spartanPAGE: gdzie ty z tą scalą w gamedevie :|?

edytowany 1x, ostatnio: Rev
spartanPAGE
@Rev wspomniałem o scali w przypadku ogólnego dylematu autora pod tytułem C# czy C++; Autor nie jest osobą w żadnym stopniu zaawansowaną, więc o poważnym gamedevie tutaj w ogóle nie mówimy. Niech najpierw ogólnie nauczy się programować.
RE
A czy jakakolwiek gra w Scali została kiedykolwiek wydana?
spartanPAGE
@Rev w przypadku osoby początkującej możemy w ogóle zignorować temat gier, na który się wszystkie młodziki łasą; Ale jeśli naprawdę się uprzeć, to można podstawić gry na platformę java w miejsce gier w scali
X3
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 10 lat
  • Postów:53
0

A w przyszłości znajomość C++ będzie potrzebna? Czy da się być dobrym programistą, bez znajomości C++?

Wizzie
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 7 lat
3

A w przyszłości znajomość C++ będzie potrzebna? Czy da się być dobrym programistą, bez znajomości C++?

Może daj sobie spokój z tymi pytaniami (za każdym razem o inny język) i programuj w czym ci się podoba. Język na początku nie ma znaczenia, liczy się, że nauczysz się programować, a nie że nauczysz się jakiegoś języka.

Programmer98
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 9 lat
0
xmisi3g napisał(a):

A w przyszłości znajomość C++ będzie potrzebna?

Zadzwoń do wróżki.

matoung
  • Rejestracja:około 10 lat
  • Ostatnio:ponad 7 lat
  • Postów:53
0

Tego nikt nie wie. Ale im więcej nauczysz się teraz, kto wie... może okazać się to bardzo pomocne np: za 10 lat.

Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 19 godzin
1

A ja po dłuższym namyśle bym polecił Rusta.
http://www.rust-lang.org/
Znalazłem na szybko nawet jakieś bindingi do graficznych API:
https://github.com/gfx-rs/gfx-rs
Jako, że Rust jest stworzony pod kompilację do kodu natywnego i minimalne środowisko uruchomieniowe (brak odśmiecacza, bajtkodu/ kodu pośredniego/ kompilacji JIT) to powinien dobrze współgrać z API do grafiki 3D jak DirectX, OpenGL, Mantle (które jest bazą dla OpenGL Vulkan i hmm inspiracją (?) dla DirectX 12).

Rust jak na razie jest świeżynką i ciężko przewidywać jego przyszłość. Jak na razie jest mocno niepewny jeśli chodzi o jego wykorzystanie komercyjne, ale moim zdaniem wartość edukacyjną może mieć sporą. Ja np swoje przygody z programowaniem na poważnie zaczynałem od czystego asemblera i wałkowałem go wiele lat hobbystycznie. Później trzeba było znaleźć pracę, więc zostałem Javowcem, a teraz jestem Scalowcem i generalnie nie uważam, by lata spędzone nad asemblerem były stracone.

W ogóle grzebałem w wielu językach:

  • czysty asembler x86,
  • C,
  • Pascal,
  • C++,
  • Java,
  • Scala,
  • OpenCL,
  • Python,
  • Haskell,
  • JavaScript,
  • SQL,
  • Bash (ale w nim strasznie ciężko się poruszam),

Moim zdaniem, jeśli zależy ci na klepaniu gierek, to bierz się za Rusta. Z języków bez VMek C jest zbyt toporny, C++ zbyt zamotany (z mojego punktu widzenia, C++ to C wzbogacony o konstrukcje, które niby mają usprawnić życie programisty, ale przez obsesję na punkcie minimalizacji narzutu są trudne w utrzymaniu i rozwoju), a Rust wydaje się spoko.
Napisałeś, że masz 14 lat, więc i tak nie ma sensu się teraz nastawiać na komercję, bo zanim zaczniesz pracować na pełen etat to minie z 7 - 10 lat, a to jest czas na naukę kilku języków, a nie jednego,


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 1x, ostatnio: Wibowit
spartanPAGE
Jeśli chodzi o poważniejszy C++ to jedyną rzeczą wartą zaznaczenia jest podwyższony próg wejścia jaki narzuca sam język, po tym wszystko przychodzi naturalnie jak poranne...a medytacja
RE
Jeżeli miałbym pisać teraz silnik do gier od zera to z pewnością Rust byłby bardzo dobrym wyborem. To unikat jeśli chodzi o język typu 'systems programming'. Zdarzyło mi się rozmawiać kilka tygodni temu z Chrisem Heilmannem i generalnie wszyscy w Mozilli są bardzo optymistycznie nastawieni do przyszłości Rusta. Są już plany by pod koniec roku zacząć wprowadzać elementy napisane w Ruście do Firefoksa, a i nieformalną opieką nad Servo sprawuje Samsung i jest szansa, że ten silnik znajdzie się w mobilnej przeglądarce na telefonach tegoż producenta.
spartanPAGE
@Rev ciekawe, wręcz nadające się na mikrobloga ;)
hauleth
@Rev zamiast gadać, że "pisałbyś" to dołącz do https://github.com/PistonDevelopers. Ja aktualnie siedzę głównie w statycznych obrazach, ale niedługo mam zamiar przejrzeć trochę rendery 3D. Co do integracji z Gecko, to są plany by to zrobić do końca roku (integracja nowego języka w build chain Gecko to dość dużo roboty). Dodatkowo wczoraj wyszła beta (większość libstd już jest stable, a w becie kompilator zabrania używać innych stadiów), a na 15 maja jest deadline wersji stabilnej kompilatora. @spartanPAGE jak się w końcu zbiorę to może coś na mikro naskrobię o tym.
spartanPAGE
@winerfresh Będę czekał ;)
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)