Praca Inżynierska

0

Witam,
Pytanie bardziej do game developerów.
A mianowicie zastanawiam się nad wyborem tematu na pracę inżynierską i pomyślałem sobie o napisaniu czegoś w stylu tylko zastanawiam się jak realne to jest w przeciągu ok. 1 roku.

Technicznie:

  • Język Java lub C# choć wolał bym w javie.

Pytania:

  1. Jak realne jest wykonanie takiego projektu w ciągu 1 roku?
  2. Czy Java się do tego nada by działało to dość płynnie?
  3. Jakie środowisko wybrać?

Od czego właściwie zacząć. Chodzi o to że do tej pory siedziałem w aplikacjach desktopowych, internetowych czy serwerach o game developingu praktycznie nie mam pojęcia.

Pozdrawiam.

1

Jeśli C# to Unity3D. Nie wiem tylko czy sam dasz rade to wszystko napisać przez rok. Taka gra, to robota bardziej dla całego zespołu, a nie dla jednego "gracza". Ponadto w inzynierce chodzi o pokazanie jakiegoś algorytmu lub grupy algorytmów i ich zastosowań. W grach jest całe mnóstwo algorytmów sztucznej inteligencji, wiec gra może byc praca inżynierską. Nie wiem tylko czy cos takiego co podałeś w linku. Może byc coś prostrzego i wcale nie musi byc ukonczone na tip top.

1

Tylko, że taka gra jak pokazana to nie tyle zabawa z programowaniem, co również z teksturami (wycinanie, składanie itp. Aż mnie ciarki przechodzą).

Jw. Weż sobie unity i zrób graficznie jakiś fajny algorytm. Na samych kulkach np. można algorytm stada zaimplementować. Albo Gracz-obserwator, który zwiedza kawałek świata i może podziwiać różne zjawiska.
Projekt inżynierski to ma być "dzieło" - czyli jak mówi @Humpback pokazanie zastosowania jakiejś technologii, algorytmu. Im ciekawiej tym lepiej.

2

Pytania:

  1. Jak realne jest wykonanie takiego projektu w ciągu 1 roku?

Wykonanie swoją drogą, ważniejsze jest mieć wiedzę jak coś zrobić. Może ktoś, kto ma doświadczenie w gamedevie i robił podobne gry wcześniej mógłby coś takiego zrobić, ale jeśli jesteś zielony w te klocki, to przez ileś miesięcy będziesz się dopiero uczył i kombinował jak zrobić poszczególne elementy (a w tego rodzaju grach co dałeś, tych trudnych elementów do zaimplementowania jest masę, począwszy od grafiki, animacji, poprzez algorytmy AI, aż po zagadnienia związanego z interfejsem użytkownika).

czegoś w stylu

Nie skupiałbym się na "czymś w stylu", bo przecież nie jesteś na ASP. Jeśli już chcesz robić coś podobnego, to skupiłbym się na konkretnym problemie.

  • zagadnienia renderingu grafiki

  • sztuczna inteligencja sterująca zachowaniami jednostek w grze (np. żołnierzy)

  • samogenerujący się proceduralny świat w grze

  • zagadnienia związane z edytorem map (interfejs, sposób importu/exportu do różnych formatów, format map, integracja z grą, etc.)

  • algorytmy genetyczne jako sposób na naukę NPCów

Wtedy mógłbyś się skupić na czymś konkretnym. Nad każdym takim zagadnieniem z osobna można spędzić kilka miesięcy co najmniej. Na dodatek mając konkretny problem przed sobą, możesz czuć, że do czegoś dążysz konkretnego i że robisz coś cool. Robiąc wszystko naraz zrobisz co najwyżej słabiutką grę na zaliczenie.

0

Powiem tak, według mnie temat ciekawy w sumie lepsze to niż klepanie w kółko nudnych projektów. Ciekawiło mnie czy w takim czasie da się wykonać coś takiego, by mieć jednocześnie jakiś czas dla siebie zaczynając od totalnego lajka w gamedevie. Widzę w tym plusy w postaci super projektu do CV dla przyszłych pracodawców, doświadczenie, poprawienie logiki ( algorytmika ), samozadowolenie.

Ale zanim podejmę/podjąłbym się takiego zadania pytam ludzi o zdanie czy oby nie porywam się z motyką na słońce.

1

Pierwsze pytanie. Jak bardzo chcesz korzystac z gotowych silnikow?

Jezeli Java to musisz napisac dosc duzo kodu samemu. Powiedzialbym ze duzo kodu samemu zanim bedziesz mogl cokolwiek rysowac i robic (nie znam zadnej bibloteki w javie ktora pozwalalaby to co gotowe silniki)

Jezeli chcesz to po prostu zrobic zostaje Ci Unity (ze wzgledu ze darmowe, ze przyjazne poczatkujacym)

Na samo poznanie Unity (na bardzo dobre poznanie) zajelo mi 2-3 miesiace pracowanie z nim codziennie po 8 godzin

Jezeli chodzi o samo skryptowanie to dasz rade w rok. Nie znam Twojego skilla wiec ciezko ocenic. Ale z programowaniem nie powinno byc problemu.

Do tego dochodzi jeszcze design mapy/ui/gry/postaci etc. Masz jakiegos grafika? Potrafisz "zajmowac" sie teksturami?
A co z muzyka?
A co z grafika?
A co z pomyslem?

Pomysl tutaj ma najwiecej do gadania. Jezeli masz pomysl ktory jest dopiety od A do Z to tak, ale jezeli nie wiesz czego chcesz to spedzisz wiecej czasu na to co checsz zrobic niz na jego robieniu.

0

Więc tak - Może jakimś zapaleńcem gier nie jestem, pomysł przedstawiłem powyżej dotyczący samej mechaniki gry.

Co do samego projektu postawił bym tutaj na podejście agile ( oddawanie fragmentami ). W tej chwili może to trochę śmiesznie brzmi ale chodzi mi mniej więcej o nie robienie 30 jednostek na raz, a następnie łapanie się za tworzenie kolejnych 60 budynków, ale stopniowo. Chłop -> ratusz -> młyn -> implementacja skryptu dla chłopa + przyrostu żywności, kiedy to skończę biorę się za kolejną jednostkę - budynek itd.

By projekt był w każdej chwili gotowy do zaprezentowania.

  • Jeżeli chodzi o programowanie. Sądzę że nie powinno być problemu.
  • Grafika: Blender ( lajk ).
  • Muzyka ( brak pomysłu ).
  • Animacje ( nie wiem jak ruszyć ).

Grafik myślę że ewentualnie by się jakiś znalazł.

0

Przerost formy nad treścią. Zró prostą pracę, obroń i w zaoszczędzonym czasie rób taki projekt dla siebie i poszukaj pracy w gamedevie.

1
  • Jeżeli chodzi o programowanie. Sądzę że nie powinno być problemu.

oj, żebyś się nie zdziwił. Programowanie gier to ciągłe myślenie o:

  • architekturze
  • algorytmach
  • usuwaniu bugów
  • optymalizacji
    No chyba, że korzystasz z gotowego silnika, gdzie kreujesz mapę i tylko skryptujesz eventy.

W tej chwili może to trochę śmiesznie brzmi ale chodzi mi mniej więcej o nie robienie 30 jednostek na raz, a następnie łapanie się za tworzenie kolejnych 60 budynków, ale stopniowo. Chłop -> ratusz -> młyn -> implementacja skryptu dla chłopa + przyrostu żywności, kiedy to skończę biorę się za kolejną jednostkę - budynek itd.

dobrze kombinujesz, ale trochę nie w tę stronę. Przecież jak zrobisz ogólny szkielet i przemyślisz dobrze architekturę, tudzież zadbasz o reużywalność kodu, to wystarczy, że zrobisz kilka podstawowych typów budynków, a później dodanie 10 czy 30 albo 60 budynków już nie będzie specjalnym problemem. Chyba, że chodzi o robienie samej grafiki do tych budynków. To wtedy masz rację. W sumie nie wiem ile taką grafikę się by robiło do jednego budynku. Ale od strony programistycznej to nie problem. Większym problemem jest architektura, algorytmy i wszystko inne.

1

Jeśli chodzi o Javę to jest JMonkeyEngine ale sporo rzeczy brakuje w porównaniu z np. Unity lub są ale kiepsko zrobione, z buggami, i napisać swoje czasem jest jedynym wyjściem.
Dość płynnie działa, wszystko zależy ogólnie od ilości wierzchołków na scenie i efektów (cienie, odbicia).
Natomiast żeby stworzyć cokolwiek sensownego to myślę że rok trzeba minimum, bawiłem się parę miesięcy i mam w głowie jakiś pomysł na grę, ale to jest naprawde sporo roboty, pomijając grafikę, i programowanie, to jeszcze jest kwestia fabuły - sam pomysł to mało, potrzebne są konkrety, by zacząć pisać, więc projekt gra to jest wg. mnie dla minimum 3 osób (grafik, programista i ktoś kto wymyśla skrypty fabuły - ogólny pomysł może być twój ale potrzebna jest osoba która ułoży większy obrazek z mniejszych.)

0
LukeJL napisał(a):
  • Jeżeli chodzi o programowanie. Sądzę że nie powinno być problemu.

oj, żebyś się nie zdziwił. Programowanie gier to ciągłe myślenie o:

  • architekturze
  • algorytmach
  • usuwaniu bugów
  • optymalizacji
    No chyba, że korzystasz z gotowego silnika, gdzie kreujesz mapę i tylko skryptujesz eventy.

W tej chwili może to trochę śmiesznie brzmi ale chodzi mi mniej więcej o nie robienie 30 jednostek na raz, a następnie łapanie się za tworzenie kolejnych 60 budynków, ale stopniowo. Chłop -> ratusz -> młyn -> implementacja skryptu dla chłopa + przyrostu żywności, kiedy to skończę biorę się za kolejną jednostkę - budynek itd.

dobrze kombinujesz, ale trochę nie w tę stronę. Przecież jak zrobisz ogólny szkielet i przemyślisz dobrze architekturę, tudzież zadbasz o reużywalność kodu, to wystarczy, że zrobisz kilka podstawowych typów budynków, a później dodanie 10 czy 30 albo 60 budynków już nie będzie specjalnym problemem. Chyba, że chodzi o robienie samej grafiki do tych budynków. To wtedy masz rację. W sumie nie wiem ile taką grafikę się by robiło do jednego budynku. Ale od strony programistycznej to nie problem. Większym problemem jest architektura, algorytmy i wszystko inne.

Tak jak pisałem zacznę od podstawowych jednostek/budynków i będę tworzył stopniowo nowe na przykład dla chłopa, stworzę sobię klasę "peasant" w niej będzie przykładowa pozycja chłopa oparta na wektorach ( locationInVector ), working - typu przykładowo WorkingType ( enum ) który będzie sprawdzany i ewentualnie tworzony obiekt Field bądź Mine ( w konstruktorze oczywiście bonuses ) itd... ( Wymyślone na spontanie ). Każdy chłop będzie tworzony na liście bądź tablicy. Kiedy do tego stworzę ratusz, pole, kopalnie będę myślał co dalej..

Przy okazji możecie dać znać czy dobrze kombinuję ;)

4

Poczytaj sobie to to:
http://students.mimuw.edu.pl/~ms201095/praca%20magisterska.pdf

Gość napisał grę jako pracę magisterską (co ciekawe wcześniej pracował również przy tworzeniu Wiedźmina :P).

1

Więc tak,
Postanowiłem że spróbuję. Do wyboru tematu pracy inżynierskiej mam mniej-więcej jeszcze 6 miesięcy i tak jak napisał @AreQrm, będę pisał ten projekt pod siebie. A za 6 miesięcy zobaczymy co z tego wyjdzie jeśli nie zrobię nic szczególnego będę kontynuował projekt, a obronię się z jakiejś prostej aplikacji. Na początek mnie czeka nauka samego Unity 3D jako framework'a oraz blender'a.

Podziękowania dla: @xfin , @LukeJL , @fasadin , @AreQrm , @topik92 za trafne odpowiedzi :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1