Co dla solidnego twórcy oprogramowania ogólnego różni się w tworzeniu gier, zarówno fundamentalne, jak i różnice w stopniu?
Zrobiłem gry z zabawkami, takie jak Kółko i krzyżyk, Tetris i solver sudoku z brutalną siłą (z interfejsem użytkownika) i teraz rozpoczynam średni projekt (średniej wielkości za to, że jestem pojedynczym programistą i nie mam zrobiłem wiele gier) i jedną z rzeczy, które znalazłem w tym konkretnym projekcie, jest to, że oddzielenie problemów jest o wiele trudniejsze, ponieważ wszystko wpływa na stan i każdy obiekt może oddziaływać z każdym innym przedmiotem na wiele sposobów.
Do tej pory udało mi się utrzymać kod w miarę czysty dla mojej satysfakcji, ale uważam, że utrzymanie czystego kodu w nietrywialnych grach jest o wiele trudniejsze niż w mojej codziennej pracy.
Gra, nad którą pracuję, jest turowa, a grafika będzie dość prosta (oparta na sieci, głównie poprzez manipulację DOM), więc praca w czasie rzeczywistym i praca w 3D nie mają do mnie zastosowania, ale nadal byłbym zainteresowany odpowiedziami na te, jeśli są interesujące. Jednak najbardziej interesuje go ogólna logika gry.
PS Nie mogę tego zmienić. Nie jestem pewien, jakie tagi mają zastosowanie.
źródło
Jestem przede wszystkim twórcą gier, a nie tradycyjnym programistą, ale myślę, że istnieje kilka kluczowych różnic.
Jest to oczywiście kilka uogólnień, które nie są wyczerpujące:
większe zespoły. Bardziej zróżnicowane tło (artyści, programiści, producenci, z każdym z nich jest jeszcze więcej odmian). Dłuższe cykle rozwoju. Wyższe standardy wydajności. Większa skala projektów. Większe i droższe ryzyko awarii. Bardziej stresujące środowisko.
Jeśli chodzi o interakcje między obiektami i układanie architektury, nadal można poprawnie oddzielić systemy. Twoje obiekty i zachowanie będą wyraźnie zależne od siebie nawzajem i od tych systemów. Taka jest natura gry (gra słów), łączy wszystkie te systemy w jedną spójną całość i nie ma w tym nic złego. Może się tak wydawać, ponieważ skala tego wszystkiego jest większa niż jesteś do tego przyzwyczajony.
Jakieś łatwe do zidentyfikowania i posegregowane systemy?
źródło
Nie sądzę, aby programowanie gier różniło się od innych domen aplikacji z tego względu, że trudniej jest wybrać odpowiedni rozdział problemów. Za każdym razem, gdy przenosisz swoje umiejętności do innego rodzaju domeny aplikacji, przekonasz się, że przejście nie jest tak płynne, jak można się było spodziewać, ponieważ zawsze występują różnice. To, co działało w aplikacji bazodanowej, ma wiele wzorców / idiomów, które nie działają tak dobrze we wbudowanej aplikacji, która ma wiele wzorców / idiomów, które nie działają tak dobrze w tym systemie czasu rzeczywistego, który ma również wiele wzorców / idiomów, które nie działają w programowaniu gier. Jednak programiści gier mają te same problemy, gdy opuszczają domenę programowania gier. To tylko kwestia tego, do czego jesteś przyzwyczajony.
Biorąc to pod uwagę, myślę, że programowanie gier wydaje się trudniejsze dla wielu osób, ponieważ wymaga pracy z częściami komputera, z którymi większość programistów nigdy nie musi sobie poradzić w swojej prawdziwej pracy (grafika i dźwięki niskiego poziomu) i matematyki bardziej stosowanej niż wielu ludzie czują się komfortowo, a nie z powodu rozdzielenia obaw. Chociaż zawsze występują trudności z określeniem właściwego wyboru w celu rozdzielenia problemów, myślę, że trudność w oddzieleniu problemów, których doświadczasz, polega po prostu na przeniesieniu się do nowej dziedziny problemów. Gdy zbudujesz kilka aplikacji, będzie to jak wszystko inne, dowiesz się, co lubisz i nie będziesz używać tego, czego nie.
źródło
Myślę, że masz tam odpowiedź, jest wiele interakcji. Zrobiłem kilka gier z XNA (C #), teraz robię grę średniej wielkości, jak mówisz, grę strategiczno-symulacyjną, pracuję nad nią od prawie 2 miesięcy i robię to sam bez pomocy, więc ja mój kod musi być prosty. Myślę, że jedną wielką różnicą jest zrozumienie i zaprojektowanie niektórych klas pod kątem funkcjonalności, a innych do rysowania, to pomaga i czyni program czystszym. Oczywiście, jeśli grasz, musisz mieć więcej zasobów, takich jak obrazy (2d lub 3d) i muzyka (lub dźwięki). Są więc różnice, myślę, że to trudniejsze, ale bardzo zabawne.
źródło
Myślę, że programowanie gier jest przyjemniejsze. Możesz stale testować swoją grę, wdrażasz różne zasady fizyki, co skutkuje odmiennymi zachowaniami.
Z mojego doświadczenia wynika, że programowanie gier jest o wiele przyjemniejsze niż tworzenie oprogramowania. Podczas tworzenia oprogramowania musisz przestrzegać pewnych reguł biznesowych, a to staje się nudne. Tworzysz oprogramowanie, to nie jest fajne. Korzystanie z oprogramowania jest świetne, pomocne, użyteczne, ale nie zabawne.
Gry są fajne. Może to tylko ja, ale uważam, że tworzenie gier jest o wiele bardziej intrygujące i ekscytujące niż tradycyjne tworzenie oprogramowania, niezależnie od używanego narzędzia.
PS: Używam najnowszych narzędzi do tworzenia oprogramowania, HTML5, Asp.Net, C # itp. Nadal uważam, że kodowanie DirectX, UDK, XNA, Unity jest przyjemniejsze.
źródło