Warsztat.GD

Programowanie => Szkółka => Wątek zaczęty przez: walkinguer w Lipiec 23, 2013, 22:53:10

Tytuł: Logika silnika, plan
Wiadomość wysłana przez: walkinguer w Lipiec 23, 2013, 22:53:10
Witajcie!

Pochodzę z PHP, ogólnie aplikacji internetowych. Czas na grę. Właśnie pobieram środowisko, nigdy nie miałem dobrych stosunków z C++, ale czas najwyższy się z nim zaprzyjaźnić. Jea. Z góry przeproszę za angielskie wyrażenia jeśli takie się pojawią.


Cała gra jest zaplanowana, większość funkcji, wszystko jest w głowie, czeka na przełożenie na kod. Potrzebuję pomocy z zaplanowaniem pliku w rodzaju "main.php", czyli w jaki sposób uruchomię grę. Plan jest taki:

1. Buduję grę w wersji tekstowej (konsolowej, interfejs na bazie wpisz współrzędne, lub identyfikator opcji).
2. Po ukończeniu zabieram się za najtrudniejszą rzecz, świat 3d, audio itp.

Funkcje gry:

-. Baza danych (chciałbym tam umieszczać wszystko na temat gry, użytkownika, jak w php)
-. Ustawienia gry i save'y w plikach

1. Main menu (+ profil użytkownika)

2. Wybór mapy
- Wyświetlenie dostępnych map, załadowanie save'a

3. Załadowanie mapy, interfejsu
- Mapa, heightmap
- Budowa obiektów


Okej, to było mega streszczenie. Moje pytanie brzmi, jak powinien wyglądać plik główny, abym mógł oprzeć całą grę na plikach, obiektach, klasach i mógł w miarę sprawnie dodać świat 3d?

W PHP podzieliłbym to na 3 pliki główne. mainmenu.php, mapselect.php, playmap.php
Reszta plików byłaby klasami np. AddBuilding.


Niestety gry są bardziej skomplikowane i nie wiem jak to rozwiązać. Chciałbym programować grę w sposób jak najbardziej zbliżony do PHP, jednak nie wiem w co ubrać te 3 pliki główne. "CO" wykorzystać, aby móc przejść z etapu Menu główne do etapu Wybór mapy, a następnie do świata 3d Załadowanie mapy jednocześnie zamykając każdy poprzedni.

Mógłby ktoś mi pomóc? Naprowadzić mnie, lub wymyślić to za mnie? To cholernie głupi problem, kminię nad tym od wczoraj i nie ogarniam, to po prostu wykracza poza moje kompetencje i wiedzę płynącą z artykułów jakie czytam.
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: Xirdus w Lipiec 23, 2013, 23:06:02
Czas na grę. (...) C++
Nie widzę związku między jednym a drugim.

1. Buduję grę w wersji tekstowej (konsolowej, interfejs na bazie wpisz współrzędne, lub identyfikator opcji).
2. Po ukończeniu zabieram się za najtrudniejszą rzecz, świat 3d, audio itp.
Gry konsolowe i 3D to całkowicie inne twory. Zupełnie niepodobne środowisko, a więc przełożenie gameplayu 1:1 jest całkowicie niemożliwe. Lepiej byś zrobił dwa osobne projekty, pierwszy tekstowy, drugi normalny.



Ogólnie zabierasz się do tego od dupy strony. Gry najpierw się wymyśla, potem robi. Musisz mieć wizję tego, co robisz, zanim w ogóle siądziesz do kodu. I przede wszystkim: nie ma generycznego modelu kodu dla wszystkich rodzajów gier.
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: Bielos w Lipiec 24, 2013, 00:10:02
Funkcje gry:

-. Baza danych (chciałbym tam umieszczać wszystko na temat gry, użytkownika, jak w php)
-. Ustawienia gry i save'y w plikach

1. Main menu (+ profil użytkownika)

2. Wybór mapy
- Wyświetlenie dostępnych map, załadowanie save'a


Za dużo myślisz technologiami WEB. Fuuu :D Widać to po pomyśle z bazą danych. Po co robić zapytania, bawić się w jakąś bazę, skoro wszystko możesz trzymać w pliku, save, nawet TXT zwykłym. Nikt Cię niczym nie ogranicza. Chyba w tym przypadku baza danych to jest najgorsze co można zrobić.

3 pliki i gra 3D? łololo. No tak, w webowych 3 pliki wystarczą na wszystko. No ale to ma być gra a nie strona internetowa. Właściwie zacznijmy od tego co wiesz na temat programowania poza PHP ? :D

To są dwie różne dziedziny, inne podejście do programowania aplikacji. W webowych wystarczy layout, connect z bazą i wszyscy szczęśliwi :D

Ok, to przykładowo, weźmy silnik Irrlicht: 182 osobnych plików klas.
Ogre ma jakieś 250 (no tak mniej więcej podaje).

Nawet prosta gra 2D troszkę tego powinna mieć (wczytywanie save, postać, wyświetlanie grafiki, przetwarzanie I/O, logika)

Zabierasz się za pisanie w C++ więc masz pełne pole do popisu. Jak narysujesz grafikę (czy DX, opengl, czy jakiś framework typu ogre) i jak będziesz pobierał komunikaty od usera (np z klawiatury) zależy tylko od Ciebie. Wybierasz co Ci pasuje w danym momencie. Sposób zapisu danych też jest dowolny (własny format, txt i coś tam jeszcze). Co do rozplanowania to robisz tyle klas i plików ile będzie dla Ciebie czytelne. Na pewno upakowanie wszystkiego do jednego pliku (szczególnie że zwykle robi się jedna klasa = jeden plik) nie jest dobrym pomysłem. Chodzi o to żebyś się później mógł w tym odnaleźć :D
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: Xirdus w Lipiec 24, 2013, 00:22:02
Za dużo myślisz technologiami WEB. Fuuu :D Widać to po pomyśle z bazą danych. Po co robić zapytania, bawić się w jakąś bazę, skoro wszystko możesz trzymać w pliku, save, nawet TXT zwykłym. Nikt Cię niczym nie ogranicza. Chyba w tym przypadku baza danych to jest najgorsze co można zrobić.
Baza danych nie znaczy SQL. Głupi config w txt też jest bazą danych.

3 pliki i gra 3D? łololo. No tak, w webowych 3 pliki wystarczą na wszystko. No ale to ma być gra a nie strona internetowa. Właściwie zacznijmy od tego co wiesz na temat programowania poza PHP
Oj weź przestań. Widzisz że gość się nie zna ale próbuje. Może zachęcajmy go zamiast zniechęcać? BTW, czemu wyedytowałeś część o PHP zanim zdążyłem ją skomentować?

To są dwie różne dziedziny, inne podejście do programowania aplikacji. W webowych wystarczy layout, connect z bazą i wszyscy szczęśliwi :D

Ok, to przykładowo, weźmy silnik Irrlicht: 182 osobnych plików klas.
Ogre ma jakieś 250 (no tak mniej więcej podaje).

Nawet prosta gra 2D troszkę tego powinna mieć (wczytywanie save, postać, wyświetlanie grafiki, przetwarzanie I/O, logika)
Chyba nie myślisz serio, że korporacyjne molochy pracują na jednym i tylko jednym pliku ze skryptem PHP?
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: Bielos w Lipiec 24, 2013, 00:30:30
Oj no żartowałem z tym PHP :D
Pewnie, że nie pracują na jednym skrypcie.

Myślę, że jednak kolega miał na myśli SQL (no chyba, że się mylę).

Na pewno tak jak wspomniał Xirdus musisz się zastanowić co tak naprawdę chcesz pisać. Skoro miałeś raczej mało doczynienia z C++ może na początek wystarczy coś konsolowego(nikt nie powiedział że nie da się zrobić tam czegoś fajnego ;-) ) lub prosta gierka 2D w jakimś frameworku (tu nie będę nic polecał bo się nie znam). No i myślę, że jak chcesz się zaprzyjaźnić z C/C++ i ogólnie aplikacjami nie Webowymi to warto zmienić podejście. Pisanie czegoś "tak jak w php" nie jest dobrym pomysłem.

Co do organizacji kodu to tak jak wspomniałem to od Ciebie zależy, jak będzie dla Ciebie czytelniej. Na pewno upychanie wszystkiego do jednego pliku/klasy nie jest dobrym pomysłem.

Cytuj
BTW, czemu wyedytowałeś część o PHP zanim zdążyłem ją skomentować?
Stwierdziłem jednak, że to co napisałem jest baaardzo złe i wywaliłem :D
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: Xion w Lipiec 24, 2013, 00:36:21
Pierwszy post Bielosa radziłbym zupełnie zignorować. Pokazuje, że autor w ogóle nie ma pojęcia co dzisiaj znaczy tzw. "webowe programowanie", co widać zwłaszcza w tym stwierdzeniu:
Cytuj
W webowych wystarczy layout, connect z bazą i wszyscy szczęśliwi :D

Co do pytania OP, to odpowiedź jest prosta: tak się nie da. Nie da się napisać gry tekstowej a potem zrobić z niej "3D", bo to zupełnie inna mechanika.
I właśnie mechanika to jest to co powinieneś ustalić najpierw. Co tak naprawdę chcesz napisać: strategię, platformówkę, shootera? Cokolwiek to będziesz, na pewno zaczniesz od pliku main.cpp (jeśli koniecznie to ma być C++, oczywiście), a potem kolejne będziesz wydzielał w miarę pisania. Nigdy nie możesz zakładać struktury na sztywno. (W "webowych" aplikacjach zresztą też, więc nie bardzo rozumiem o czym mówisz wspominających o tych '3 plikach PHP'...)

Takie rzeczy jak sposób przechowywania configu są niemal trzeciorzędne. Dopóki nie masz innych powodów, wybierz coś co jest najprostsze w użyciu. To może być jakaś biblioteka do JSONa, może być nawet SQLite ("prosty plik TXT" zazwyczaj wcale nie jest 'prosty' bo tak czy siak wymaga jakiegoś parsera, więc można równie dobrze użyć gotowego).
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: Xirdus w Lipiec 24, 2013, 00:37:48
Skoro miałeś raczej mało doczynienia z C++ może na początek wystarczy coś konsolowego(nikt nie powiedział że nie da się zrobić tam czegoś fajnego ;-) ) lub prosta gierka 2D w jakimś frameworku (tu nie będę nic polecał bo się nie znam).
NIE, NIE, NIE I JESZCZE RAZ NIE!!!

Najpierw się wpada na pomysł. Potem się zastanawia, jak go zrealizować. Jeśli zaczynasz od myślenia "chcę zrobić jakąś grę", nic z tego nie będzie. Najważniejsza jest idea. Bez idei nie ma tworzenia (bo programowanie jest procesem twórczym).
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: Krzysiek K. w Lipiec 24, 2013, 00:39:59
Cytuj
3 pliki i gra 3D? łololo.
No racja. W webowych może i potrzeba trzech plików, ale w nie-webowych wystarczy dobry framework/silnik i jeden plik. :)
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: walkinguer w Lipiec 24, 2013, 00:42:14
Cytuj
I przede wszystkim: nie ma generycznego modelu kodu dla wszystkich rodzajów gier.
Właśnie dlatego jestem na tym forum..

Doskonale wiem jaką chcę zrobić grę i jak wszystko ma działać.. Oprócz startu, czyli "systemu" (przecież tego właśnie chcę się nauczyć, gdyby to była moja 10 gra z kolei to pewnie nie pisałbym tego postu). Technika wykonania danych opcji, funkcji, to już inna kwestia. Trzeba to tworzyć, żeby wiedzieć jak stworzyć. Wydaje się bez sensu ale taka jest prawda, przynajmniej dla początkujących.


Dowiedziałem się już jednej rzeczy, za co ci dziękuje. Nie da sie po prostu przełożyć gry tekstowej na 3d, to oszczędzi mi rozkminy na ten temat.



Tymczasem zupełnie przypadkiem zrozumiałem jak rozwiązać kwestię "podstawki" :).. Tutaj konkretnie chodziło mi o główną pętlę gry. Ale wszystko już jest jasne.

PS. Hej! Albo traktujcie moje wypowiedzi w 100% dosłownie albo przeciwnie :) Napisałem 3 pliki główne, co oznacza, że będą one zawierały np. wspomnianą główną pętlę gry. Wszystkie klasy, funkcje, muszą być rozbite na osobne pliki (o tym też wspomniałem) :) Nikt nie chce przeglądać 100 000 linijek kodu w 1 pliku, czyż nie?


Przejdźmy do kolejnego problemu który się pojawił przy okazji jednej z odpowiedzi:

Config, Save - wspomniałem o tych funkcjach i oczywiste, że będą zapisywane do plików, najlepiej szyfrowanych, (tam gdzie powinny być)

Jeśli mam 250 budynków. Każdy ma własne statystyki, dajmy na to 10 wartości, np. Wysokość, Głębokość itd, które będą się zmieniać w trakcie gry (2500). Do tego statystyki gracza, powiedzmy 100 wartości, ustawień.

Czy komputer to udźwignie, czy muszę myśleć o np. tymczasowym pliku do którego dane byłyby zapisywane co sekundę, a po kliknięciu przycisku "save" do pliku save'a? To chyba ostatni mój problem.


Co do pomysłu z bazą danych. Nie, to miałaby być autorska baza danych, z funkcjami wzorowanymi na SQL, np. Update(building,id,setting,value);

Po prostu mam wrażenie, że to na dłuższą metę byłoby wiele wygodniejsze niż operowanie na zwykłych zmiennych. Pytanie tylko gdzie tą bazę zapisywać i czy w ogóle trzeba ją zapisywać..
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: Xirdus w Lipiec 24, 2013, 00:55:17
Doskonale wiem jaką chcę zrobić grę i jak wszystko ma działać..
Tak więc krzyż na drogę i do roboty!

Aby się przestawić na myślenie C++owe (http://xion.org.pl/productions/texts/coding/megatutorial/)
Kiedy będziesz potrzebował sprawdzić coś nt. biblioteki standardowej (http://www.cplusplus.com/reference/)
Gdy trafisz na przeszkodę nie do pokonania przy twoim stanie wiedzy (https://www.google.pl/)

Config, Save - wspomniałem o tych funkcjach i oczywiste, że będą zapisywane do plików, najlepiej szyfrowanych, (tam gdzie powinny być)
O ile nie robisz flashówki, szyfrowanie save'ów jest bez sensu. No bo przed kim je chronisz? Przed samym graczem?

Jeśli mam 250 budynków. Każdy ma własne statystyki, dajmy na to 10 wartości, np. Wysokość, Głębokość itd, które będą się zmieniać w trakcie gry (2500). Do tego statystyki gracza, powiedzmy 100 wartości, ustawień.
2500 to jest nic. Współczesne komputery potrafią przetwarzać miliony, jak nie miliardy liczb na sekundę. Zapisywanie na dysk jest najwolniejszą czynnością w całym ekosystemie komputerowym (poza komunikacją sieciową).

No i pozwolisz że zarzucę cytatem: "Przedwczesna optymalizacja jest źródłem wszelkiego zła". O wydajność martw się dopiero w momencie, kiedy będzie ci rzeczywiście doskwierać.

Co do pomysłu z bazą danych. Nie, to miałaby być autorska baza danych, z funkcjami wzorowanymi na SQL, np. Update(building,id,setting,value);

Po prostu mam wrażenie, że to na dłuższą metę byłoby wiele wygodniejsze niż operowanie na zwykłych zmiennych. Pytanie tylko gdzie tą bazę zapisywać i czy w ogóle trzeba ją zapisywać..
I tu się mylisz. Operowanie na zmiennych jest o wiele wygodniejsze niż pisanie zapytań - nie wspominając że niebotycznie szybsze. Oczywiście jeśli odpowiednio je zorganizujesz w klasy, kontenery, itp.
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: Xion w Lipiec 24, 2013, 01:09:37
Cytuj
Zapisywanie na dysk jest najwolniejszą czynnością w całym ekosystemie komputerowym (poza komunikacją sieciową).
Czepiam się oczywiście, ale nawias czyni to zdanie nieprawdziwym. Dostęp do dysku (HDD) *jest* najwolniejszą czynnością w całym ekosystemie. To dlatego wynalazki w rodzaju memcached czy Redis (przesyłanie przez sieć danych które siedzą tylko w RAMie drugiego komputera) mają sens.

Bardzo przydatny link: http://architects.dzone.com/articles/every-programmer-should-know
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: Xirdus w Lipiec 24, 2013, 01:27:15
Z komunikacją sieciową to miałem na myśli przez Internet. Po LANie to rzeczywiście komunikacja jest szybsza, czasem znacznie, niż z lokalnym dyskiem twardym, jednak jeśli wysyłasz coś poza budynek, to musisz się liczyć z lagami 15-20ms w kraju i nawet 200ms za granicę.
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: Veldrin w Lipiec 24, 2013, 03:13:29
Koleś zadaje proste pytanie o bazową architekturę stanów gry, bo nigdy jeszcze nie robił apki real-time jaką jest gra i od razu masa zbędnych komentarzy. 3/4 postów do kosza.

Mówiłeś, że czytałeś artykuły, ale nie znajdujesz w nich odpowiedzi. Najwidoczniej czytałeś złe.

Hasła, które Cię interesują to:

- real-time loop
- game state pattern
- game architecture

Gwarantuje, że na ten temat powstało tyle prac naukowych, że spokojnie powinieneś znaleźć wszystkie informacje. Jeżeli nie jesteś w stanie tego zrobić - nie zrobisz nigdy, niczego.

Dużo zależy od wybranej biblioteki/silnika, czy samej technologii. Jak się zdecyduje na np. SFML2 w C++ to przy tutorialach znajdziesz i przykładowego gry 2d/3d. Poszukaj.

O podziale gry na stany w ostatnim miesiącu było kilka tematów. Pamiętam Xirdus, że nawet mnie gdzieś cytowałeś. Nie można było raz jeszcze? A kwestie "bazy danych" w grze to już bicie piany na potęgę. Zrobi tak jak będzie trzeba. Jeżeli nie - trudno.

PS. Fakt, że Irrlicht czy Ogre mają po kilkaset plików świadczy tylko o ich kiepskich twórcach.
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: Xirdus w Lipiec 24, 2013, 03:28:59
Dużo zależy od wybranej biblioteki/silnika, czy samej technologii. Jak się zdecyduje na np. SFML2 w C++ to przy tutorialach znajdziesz i przykładowego gry 2d/3d. Poszukaj.
Akurat tu się nie zgodzę. O ile niektóre biblioteki narzucają jakiś specyficzny sposób pisania, o tyle zazwyczaj architektura kodu gry może być dowolna, według uznania autora. Gry w SDL, Allegro, SFML i innych tego typu bibliotekach pisze się bardzo podobnie.

O podziale gry na stany w ostatnim miesiącu było kilka tematów. Pamiętam Xirdus, że nawet mnie gdzieś cytowałeś. Nie można było raz jeszcze?
Ten sposób z niezależnymi stanami uważam za trochę zbyt zaawanowany dla naszego OP. Z czasem i do tego dojdzie ;)



I taka rada: nie zrażaj się jak za pierwszym razem nic ci z gry nie wyjdzie. Nikomu za pierwszym razem nie wyszło. Najważniejsze, żeby zobaczyć swoje błędy i przy następnym podejściu ich nie popełnić (za to popełnisz inne, i pewnie będziesz musiał po raz kolejny zaczynać od nowa; wtedy też się nie poddawaj, po prostu próbuj aż wyjdzie).
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: Veldrin w Lipiec 24, 2013, 15:02:35
Niezależne stany to wybitnie niepoprawna nazwa, ale nie o tym jest temat.

Mówiłem o technologii, nie libkach. Inaczej to sobie zorganizujesz w kodzie na Nintendo DS, Androida, a inaczej na PC ;).

Wtrącenie o SFML sugeruje tylko, że razem z libkami ma tutoriale :).
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: Xion w Lipiec 24, 2013, 15:22:53
Cytuj
(...) masa zbędnych komentarzy. 3/4 postów do kosza.
Cytuj
Jeżeli nie jesteś w stanie tego zrobić - nie zrobisz nigdy, niczego.
Cytuj
(...) nawet mnie gdzieś cytowałeś. Nie można było raz jeszcze?
Cytuj
PS. Fakt, że Irrlicht czy Ogre mają po kilkaset plików świadczy tylko o ich kiepskich twórcach.
Jak miło widzieć forumowiczów którzy cechują się tak wielką empatią i szacunkiem względem innych dyskutantów. To niewątpliwa przyjemność korzystać z ich mądrości, którą tak szczodrze i z wielką skromnością nas obdarzaja. Aż chciałoby się, żeby i inni - np. autorzy znanych silników open source - wzieli sobie do serca ich cenne rady!
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: PsichiX (ΨΧΞ) w Lipiec 24, 2013, 15:53:10
hie hie hie. Xion, wygrałeś oficjalnie dyskusję tym dissem! :D
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: Veldrin w Lipiec 24, 2013, 16:17:04
@Xion: przychodzi taki moment, kiedy najwidoczniej nie potrafię swojej wielkiej empatii i szacunku zachować. Być może zbyt często angażuje się niepotrzebnie w takie tematy i następuje pewien przesyt. Od małego wymagano ode mnie więcej niż to było możliwe, sam od siebie wciąż tego wymagam i jednocześnie wymagam tego samego od innych. Podejście, które często powoduje fochy - trzeba z tym żyć.

Niestety nie wyznaję typowo amerykańskiego podejścia klepania po plecach i mówienia "Awesome, good job!". Cokolwiek, jakkolwiek by ktoś nie zrobił. Taka praktyka staje się coraz popularniejsza. Nie każdy człowiek powinien pisać kod. To jest niestety smutna prawda :(. 

Ale zgadzam się, że aż tyle krytyki w jednym poście to było przegięcie :) (choć swojego zdania o podanych silnikach mogę bronić przy piwku zawsze;)).

PS. To kolejny, identyczny temat na tym forum. Temat, o których tematy można liczyć w setkach, posty w tysiącach. Poważnie, nie można wrzucić linków do poprzednich dwóch i zamknąć dyskusję?
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: koirat w Lipiec 24, 2013, 16:23:59
Szczerze to nie wiem jak możesz obronić to stwierdzenie.
Cytuj
PS. Fakt, że Irrlicht czy Ogre mają po kilkaset plików świadczy tylko o ich kiepskich twórcach.

Współrozmówca musiał by rzeczywiście wypić dużo piwka żeby się z tobą zgodzić.
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: walkinguer w Lipiec 24, 2013, 17:09:30
W lepszy czy gorszy sposób, potraficie ze sobą dyskutować i mimo wszystko dzięki temu spodobało mi się to forum. Wypada mi teraz odpowiedzieć na każdą poruszoną kwestię, tak więc:


Przejście z PHP na C++ ogarnąłem już "w połowie" do wczorajszego posta, dzisiaj skończe kurs jaki znalazłem, jeszcze tylko programowanie obiektowe. Więcej mnie na czas budowy gry tekstowej nie interesuje. Dokumentacja to oczywiście mój najlepszy brachor w tych tematach. Google dopiero gdy nie ogarniam czegoś z Dokumentacji ;)

Baza danych będzie istniała tylko umyślnie (tj. operowała zmiennymi), połączenie prostoty w obsłudze i jak mówicie optymalności - o którą nie powinienem się martwić.

Veldrin - wielkie dzięki. Teraz to mam ogarnięcie tematu! :D

--

Okej. Nie wiem nie rozumiem tak naprawdę połowy waszych postów, co było kierowane do mnie, co do innych, co miało kogoś obrazić czy coś. Ważne że otrzymałem odpowiedzi. Teraz ukończę kurs i zabieram się do pracy. Za tydzień/dwa powinniście gdzieś w którymś dziale znaleźć klip przedstawiający konsolową gierę.

No to dzięki wszystkim! :P
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: jjoker8 w Lipiec 24, 2013, 17:47:07
Cytuj
Jeśli mam 250 budynków. Każdy ma własne statystyki, dajmy na to 10 wartości, np. Wysokość, Głębokość itd, które będą się zmieniać w trakcie gry (2500). Do tego statystyki gracza, powiedzmy 100 wartości, ustawień.
zwracaj uwagę jak zapisujesz dane, stosując np. short int albo uint zamiast zwykłego int itp, możesz zaoszczędzić nawet kilkanaście razy więcej miejsca. Tak samo flagi bitowe. No a tak w ogóle to Xion napisał fajny artykuł (wieki temu czytałem :)) o pętli czasu rzeczywistego.
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: Xirdus w Lipiec 24, 2013, 17:56:54
zwracaj uwagę jak zapisujesz dane, stosując np. short int albo uint zamiast zwykłego int itp, możesz zaoszczędzić nawet kilkanaście razy więcej miejsca.
Nie mam pojęcia jakim cudem 2 razy mniejsza zmienna zmniejsza zużycie pamięci razy kilkanaście. A uint ma taki sam rozmiar co zwykły int. Nie wspominając o tym, że komputer z którego piszesz ma kilka gigabajtów RAMu.
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: Veldrin w Lipiec 24, 2013, 18:05:50
Nie jest to temat tej dyskusji, ale żeby zakończyć offtop - polecam zapoznanie się ze źródłami wspomnianych silników. A przez zapoznanie rozumiem dokładną analizę architektury zaimplementowanych rozwiązań, zastanowieniu się co i jak można byłoby zmienić, usunąć itp.

A wszystko to zrobić w kontekście objętości silnika. Może pisali to genialni programiści, ale w kontekście architektury silnika i jego objętości - uważam wiele rozwiązań podstawowych za kiepskie.

Rozróżniajcie architekturę od funkcjonalności! Można napisać SUPER silnik/gier w BARDZO kiepski sposób. Jak to świadczy o programiście? Dobrze? Co innego o samym projekcie ;)

Nigdzie nie napisałem, że są to złe projekty i nadają się do kosza. Irrlicht jest świetnym materiałem na kilka laborek z tematyki gier/grafiki/silników. Ogre bym polecił jako bazę do projektu z takiego przedmiotu. Wyobrażam sobie też parę godzin wykładów case study o "smaczkach" ich architektur. A i komercyjne gry na nim powstają co coś jednak musi świecić ;).
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: jjoker8 w Lipiec 24, 2013, 18:46:48
Cytuj
Nie mam pojęcia jakim cudem 2 razy mniejsza zmienna zmniejsza zużycie pamięci razy kilkanaście
no tu akurat myślałem o czym innym, my bad, chodziło mi raczej o wskazanie jak można w prosty sposób zmniejszyć ilość uzywanych zasobów. No a uint też może zaoszczedzić miejsca jesli nie będzie używanych liczb ujemnych a trzeba bedzie wiecej zapisać na plus.
No a co do tego ramu to nigdzie nie napisał że będzie robił gry na pc
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: Xirdus w Lipiec 24, 2013, 19:18:58
No a co do tego ramu to nigdzie nie napisał że będzie robił gry na pc
Tamto zdanie miało uświadomić, że optymalizacje, które miały sens 10 lat temu, nie mają aż tak dużo sensu dzisiaj. Najgorszy współczesny telefon pomieści 60 milionów czterobajtowych intów.
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: Veldrin w Lipiec 24, 2013, 22:24:27
@up: ale nie koniecznie chcemy, żeby to zrobił ;). Nie chcę, żeby twórca mojej przeglądarki internetowej wychodził z założenia, że skoro mam N gb pamięci to jego soft będzie wykorzystywał np. połowę :D. Oczywiście takie optymalizacje wynikają już bezpośrednio  z wymagań niefunkcjonalny danego projektu. Nie znamy ich, więc nie wiele można powiedzieć.
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: Xirdus w Lipiec 24, 2013, 22:30:05
Nie chcę, żeby twórca mojej przeglądarki internetowej wychodził z założenia, że skoro mam N gb pamięci to jego soft będzie wykorzystywał np. połowę :D.
Też jestem tego zdania, ale chyba tworzymy mniejszość, skoro i Chrome, i Firefox zajmują 100MB na starcie (czyli więcej niż waży cały folder z przeglądarką), i rośnie nawet 4 razy przy nie tak ekstremalnym przeglądaniu neta.
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: koirat w Lipiec 24, 2013, 23:22:09
Lepsze to niż żeby zajmował 10 MB w ramie i wszystko zrzucał na dysk zamiast trzymać w pamięci.
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: Xirdus w Lipiec 24, 2013, 23:24:26
Lepsze to niż żeby zajmował 10 MB w ramie i wszystko zrzucał na dysk zamiast trzymać w pamięci.
Jeśli ma się zaledwie gigabajt RAMu to można polemizować.
Tytuł: Odp: Logika silnika, plan
Wiadomość wysłana przez: Xion w Lipiec 25, 2013, 01:03:37
Cytuj
Jeśli ma się zaledwie gigabajt RAMu to można polemizować.
To może od razu 640kb, bo w końcu miało wystarczyć dla każdego? ;P

Cytuj
Nie chcę, żeby twórca mojej przeglądarki internetowej wychodził z założenia, że skoro mam N gb pamięci to jego soft będzie wykorzystywał np. połowę :D
A ja bardzo chcę, o ile będzie potrafił tę pamięć wykorzystać i zwolnić jeśli zajdzie potrzeba. Tak się składa, że przeglądarki właśnie to robią.