Autor Wątek: Jaki framework wybrać dla c# do domowego projektu?  (Przeczytany 4445 razy)

Offline nowy1

  • Użytkownik

# Czerwiec 30, 2013, 13:02:48
Cześć, chciałbym się Was poradzić jaki wybrać framework do swojego prywatnego domowego projekciku? :) można powiedzieć, że zawodowo programuje w c# ale w zupełnie innej branży, a ten projekt chce potraktować jako pole do poznania czegoś nowego, do rozwinięcia swoich umięjętności, jak i pobawienia się trochę matematyka fizyką itp :) nie wiem tylko jaki framework wybrać. Myślałem nad XNA lecz ms już porzucił ten projekt. Niby mi to nie przeszkadza bo i tak to ma być projekt tylko dla zabawy a nie zawodowo, no ale postanowiłem jeszcze czegoś poszukać. Często polecany był Unity i tutaj sam nei wiem co lepsze. Znam również c++, ale tylko sam język, bez bibliotek, a i pewnie sama znajomość języka trochę już "zaśniedziała". Raczej ten projekt chciałem potraktować też jako poligon, na którym poznał bym kolejne zaawansowane cechy c#, dlatego sam nie wiem co wybrać. Czy wziąć jakiś popularny framework i napisać w c++ czy wziąć xna i pisać w c#? Co byście poradzili? :)

ps
Czytałem, że w unity da się pisac w c#, ale jak to wyglada w praktyce? Czy jest to zwykły wrapper czy raczej serio konkretna implementacja?

Offline Mr. Spam

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

Offline Ajgor

  • Użytkownik

# Czerwiec 30, 2013, 13:09:31
C# w Unity nie do końca przypomina "zwykły" c#. Może składnia podobna, ale to jednak są biblioteki natywne. Po za tym napisałeś, że to ma być "projekt domowy", ale to nic nie mówi. Co to ma być dokładniej?

Offline nowy1

  • Użytkownik

# Czerwiec 30, 2013, 13:28:26
Nie pisałem dokładnie, bo zanim dojdę do poziomu tego co naprawdę chce napisać to pewnie trochę minie :) chciałbym napisać grę wyścigową, gdzie mógłbym pobawić się implementacją fizyki jaki i sztucznej inteligencji. Tak jak pisałem, projekt ma być dla mnie hobby i czymś gdzie poznam nowe algorytmy itp. Po prostu chce poszerzyć horyzonty, a przy tym dobrze się bawić :) chciałem c# bo przyjemne szło by w parze z pożytecznym :)

Offline koirat

  • Użytkownik

# Czerwiec 30, 2013, 13:49:24
Akurat c# w unity bardzo przypomina c#  pod windows jako że skrypty w unity wykonywane są poprzez Mono dołączone do enginu. Główna różnica to framework, nie wszystko to co znajduje się w .NET jest dostępne pod Mono. Druga sprawa to dostępność funkcji zależna od poziomu kompatybilności pod który piszemy.
http://docs.unity3d.com/Documentation/ScriptReference/MonoCompatibility.html

Jeśli chcesz pisać w c# to osobiście polecam Unity3d.

Offline komorra

  • Użytkownik
    • Blog naszego teamu (o grze Voxelfield)

# Czerwiec 30, 2013, 13:50:57
C# w Unity nie do końca przypomina "zwykły" c#. Może składnia podobna, ale to jednak są biblioteki natywne.

Nie, jest to zwykły C# z .NETem 3.5 (pewien tylko nie jestem czy wszystkie moduły .NETu można użyć)

Co do pytania autora wątku:

Z mojej strony polecam SharpDX (http://www.sharpdx.org/). Jest to bardzo dobry wrapper na DirectX (9, 10, 11) + zawiera SharpDX Toolkit, który w pewnym sensie jest odpowiednikiem XNA, jednak sam toolkit będzie zapewne lepiej rozwinięty w wersji 2.5 (obecna stabilna to 2.4.2). Praca z nim wygląda tak że dołączamy biblioteki SharpDX (można w VS 2012 dołączyć z NuGeta) i normalnie piszemy z .NETem 4.0 (albo 2.0 do wyboru)

Próbowałem również Neoaxis (http://www.neoaxis.com/). To przypomina bardziej Unity. Tutaj właściwie mamy gotowy projekt (ale nie pusty). Z którego stopniowo usuwamy ich implementację i dokładamy swoją, przekształcając go w nasze rozwiązanie. Fajnie bo jest to gotowy silnik (zaimplementowany shadowmapping, efekty screen space, deferred shading itd, obsługa modeli i animacji 3D, dźwięku, partikli). Jakby jeszcze troche poczekać to neoaxis będzie projektem open source.

Można też zwrapować w C# sobie OpenGLa - wychodzi to całkiem nieźle. Przyda się do tego narzędzie PInvoker, który automatycznie zwróci odpowiednie nagłówki metod C#. Jest co prawda TAO Framework, ale chyba dawno nie rozwijany już.

Offline Avaj

  • Użytkownik

# Czerwiec 30, 2013, 14:03:56
@up już lepiej chyba http://www.opentk.com/

Offline nowy1

  • Użytkownik

# Czerwiec 30, 2013, 15:21:13
Dziękuję wszystkim bardzo za pomoc :) ogólnie rozumiem,że XNA lepiej sobie darować? :) Spodobała mi się ten wrapper do DirectX bo kiedyś jak będę miał więcej czasu to mógłbym się tez pobawić natywnie w c++ nie musząc uczyć sie wszystkiego od samego początku :) ale widzę, że do openGL też jest coś niezłego :) i tu mam zgrzyt, bo nie wiem co wybrać, a nie chce się brać za 10 rzeczy na raz, bo wtedy to nic nie zrobię. Co byście polecili i dlaczego? Dodam, że nie raczej nie zależy mi na przenośności kodu, bo prawdopodobieństwo, że przesiądę się z windowsa jest raczej małe.
Chciałbym jeszcze zapytać o jakiś framework do samej architektury aplikacji. Bo jak rozumiem czy wybrałbym Directx czy openGl to to są same biblioteki, a chciałbym zapytać czy używacie też czegoś jak np. prism dla aplikacji wpf?

//Edit
Nie chce żeby wyszło, że nie umiem używać google :) ale czy moglibyście mi polecić coś (książkę czy tutorial) traktującego o własnie projektowaniu gry, tj. architektury itp. Chodzi mi o to, aby nie był to tutek tłumaczący podstawy samego programowania w danym języku czy podstaw oop, bo z tym sobie raczej jakoś radzę, ale chodzi mi o fazę projektu tak aby go też zakończyć, jak i o to jaką strukturę nadać, bo pod wzgędem gamedevu na tym polu jestem zielony :) btw. wpc ma MVVM, webówka ma MVC, a co macie Wy? :P
« Ostatnia zmiana: Czerwiec 30, 2013, 15:33:12 wysłana przez nowy1 »

Offline blejd123

  • Użytkownik

  • +2
# Czerwiec 30, 2013, 19:30:47
My mamy cokolwiek co działa :D

Offline matheavyk

  • Użytkownik
    • rabagames.com

# Lipiec 01, 2013, 01:14:41
Czekałem cały dzień na czyjąś odpowiedź i doczekałem się tylko takiej o jakiej sam myślałem:D

No właśnie, co mamy my? Może to jeden z powodów tego, że tak wiele gier nie zostaje dokończonych.

Offline komorra

  • Użytkownik
    • Blog naszego teamu (o grze Voxelfield)

# Lipiec 01, 2013, 09:11:10
Moim zdaniem nie jest to główny powód - brak odpowiedniego frameworka aplikacji. Czasami nawet najlepszy framework nie przeszkodzi w odpowiedniej destrukcji projektu aż do momentu kompletnej nieużywalności kodu. Bardziej do ukończenia projektu potrzeba chyba samozaparcia, wytrwałości - tego mi zazwyczaj brakuje. Zwykle też pojawia się lepszy pomysł, który powoduje że następuje przesiadka do nowego projektu.

Poza tym, jest tyle gatunków gier, rodzajów optymalizacji samego silnika pod nie, że wydaje mi się niemożliwe zgeneralizowanie tego do jakiegoś bardzo uniwersalnego frameworka gry.

Offline nowy1

  • Użytkownik

# Lipiec 03, 2013, 09:55:20
Postanowiłem, że zdecyduję się na SharpDx :) szukałem też trochę różnych książek/artykułów na temat programowania gier (tu na forum tez widziałem taką listę z polecanymi) i pewnym problemem jest to, że wiele tych książek zawiera same podstawy programowania, znowu te które wydają się być bardziej zaawansowane to w Polsce są nie dostępne, a na razie nie chce aż tak bardzo inwestować w książki, bo w sumie jeszcze nie wiem czy gamedev jest na pewno dla mnie :) dlatego jakby ktoś z Was miał jakieś linki do ciekawych artykuł to prosiłbym o podzielenie się :)