Główne czynniki, które wpłyneły na szybki rozwój gier komputerowych.

Główne czynniki, które wpłyneły na szybki rozwój gier komputerowych.
AR
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 7 lat
  • Postów:2
0

Witam,

bardzo interesującą dla mnie kwestią jest rozwój gier komputerowych. Zastanawiam się co głównie wpłyneło na tak szybki ich rozwój, w pewnym momencie z pacmana nagle przeszliśmy do bardzo zaawansowanych gier 3D. Jakie czynniki jesteście w stanie wymienić, które wpłynęły na ten rozwój.

Według mnie jednym z głównych czynników było wprowadzenie programowania potoku renderowania, czyli wprowadzenie np. modern OpenGL. Proszę o wypowiedzi i ewentualne podważenie mojej teorii.

Ps. Potrzebuję tych informacji na jedną z moich prezentacji na studia. Także wszystko co Wam przyjdzie do głowy możecie pisać :)

Pozdrawiam.

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Tuchów
  • Postów:12166
3

IMO najważniejszym czynnikiem w tej materii był rozwój i unowocześnianie samego sprzętu – coraz szybsze CPU, coraz szybsze i bogatsze w funkcjonalność PPU/GPU, coraz więcej dostępnej pamięci RAM i ROM. Bez rozwoju elektroniki, rozwój języków programowania, oprogramowania do tworzenia gier, bibliotek itd. nie byłby możliwy.

Andrzej Ratajewski napisał(a):

[…] w pewnym momencie z pacmana nagle przeszliśmy do bardzo zaawansowanych gier 3D.

Przed 3D królowało 2D, 2.5D (parallax scrolling czy rzut izometryczny) oraz zapomniany Mode 7. ;)


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 3x, ostatnio: flowCRANE
W0
Za Mode 7 plus, zawsze mnie dziwiło jak SNES był w stanie to ogarnąć.
flowCRANE
Nie ma co się dziwić – są na ten temat materiały w sieci, więc można poczytać.
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:37 minut
2

w pewnym momencie z pacmana nagle przeszliśmy do bardzo zaawansowanych gier 3D

Pewnym momencie? Pac-Man to rok 1980, a Quake to rok 1996. 16 lat różnicy to trochę za dużo by nazwać to "momentem".

Według mnie jednym z głównych czynników było wprowadzenie programowania potoku renderowania, czyli wprowadzenie np. modern OpenGL. Proszę o wypowiedzi i ewentualne podważenie mojej teorii.

Akceleratory 3D zostały wprowadzone zanim korzystanie z OpenGL w grach stało się popularne. Na samym początku gier 3D popularne wręcz były API przeznaczone pod konkretny sprzęt od konkretnego producenta, np https://en.wikipedia.org/wiki/Glide_(API)


"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
msm
A od Quake do roku dzisiejszego znowu ponad 16 lat. Niektórzy chyba przeceniają szybkość rozwoju gier :P.
W0
  • Rejestracja:ponad 12 lat
  • Ostatnio:3 minuty
  • Postów:3551
1
Andrzej Ratajewski napisał(a):

Witam,

bardzo interesującą dla mnie kwestią jest rozwój gier komputerowych. Zastanawiam się co głównie wpłyneło na tak szybki ich rozwój, w pewnym momencie z pacmana nagle przeszliśmy do bardzo zaawansowanych gier 3D. Jakie czynniki jesteście w stanie wymienić, które wpłynęły na ten rozwój.

A skąd takie pomysły? PS2, konsoli mającej w sumie 32/4 MB RAMu (32 MB ogólnej i 4 MB VIDEO) bliżej jest do dzisiej dni niż do daty wydania Pac-Mana.

Według mnie jednym z głównych czynników było wprowadzenie programowania potoku renderowania, czyli wprowadzenie np. modern OpenGL. Proszę o wypowiedzi i ewentualne podważenie mojej teorii.

Ps. Potrzebuję tych informacji na jedną z moich prezentacji na studia. Także wszystko co Wam przyjdzie do głowy możecie pisać :)

Pozdrawiam.

Głównym czynnikiem był po prostu wzrost mocy sprzętowej. Wszelkiego rodzaju wodotryski graficzne itp. nie byłyby możliwe gdyby nie gwałtowny rozwój mocy kart graficznych i procesorów. Przykładowo:

  • w 1985 roku popularne były 386ki - procesory Intel z taktowaniem do 40 MHz (wersja premium)
  • w 2000 roku weszły P4, które miały już 2 GHz - ponad 50 razy więcej
  • w 2015 roku weszły i7-ki, które miały cztery rdzenie po 3,3 GHz - to samej mocy jest ok. sześć razy więcej

Zauważ, że skupiam się tutaj tylko i wyłącznie na jednej zmiennej - a tych zmiennych jest dużo więcej. Liczba rdzeni, nowe instrukcje procesorów, przepustowość magistrali, rozmiar pamięci cache... A nie doszliśmy jeszcze do układów graficznych, rozmiar RAM itp. OpenGL był tylko sposobem na zapanowanie nad rosnącą mocą obliczeniową.
Inną rzeczą która na 100% miała wpływ to oczywiście przemiany społeczne i popularyzacja komputerów oraz sprzętu do grania. Za potencjalnymi pieniędzmi poszły inwestycje, które zaowocowały nowymi produktami, które z kolei przyciągnęły jeszcze większą rzeszę fanów itp. itd.

Trudno mi ocenić jak konkretnie to było - czy sprzedawcy krzyczeli na jajogłowych żeby upychali jak najwięcej tranzystorów na jak najmniejszej powierzchni czy też naukowcy wpadali na pomysł jak to zrobić i następnie szli z tym do CEO firm, którzy z radości skakali - ale postęp się dokonał.

LS
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 6 lat
  • Postów:990
1

Steam, wprowadzenie płatnych DLC, wprowadzenie gier epizodycznych i wreszcie gier w które nie da się zagrać bez połączenia z siecią.


--
Annuit Coeptis
AR
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 7 lat
  • Postów:2
0

To może inaczej, bo widzę, że odpowiedź na pytanie które zadałem byłaby zbyt szeroka. Czy bylibyście w stanie wypowiedzieć się w jaki sposób wprowadzenie programowalnego potoku renderowania wpłynęło na rozwój gier komputerowych? Wiecie może jakie gry jako pierwsze wykorzystywały shadery?

Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:37 minut
0

Stawiam, że pionierem było 3dfx ze swoim Voodoo i własnościowym API. OpenGL był raczej stworzony do stacji roboczych, a nie gier. Za Wikipedią:

In the 1980s, developing software that could function with a wide range of graphics hardware was a real challenge. Software developers wrote custom interfaces and drivers for each piece of hardware. This was expensive and resulted in multiplication of effort.

By the early 1990s, Silicon Graphics (SGI) was a leader in 3D graphics for workstations. Their IRIS GL API[12] was considered state-of-the-art[citation needed] and became the de facto industry standard, overshadowing the open standards-based PHIGS. This was because IRIS GL was considered easier to use, and because it supported immediate mode rendering. By contrast, PHIGS was considered difficult to use and outdated in functionality.

SGI's competitors (including Sun Microsystems, Hewlett-Packard and IBM) were also able to bring to market 3D hardware, supported by extensions made to the PHIGS standard. This in turn caused SGI market share to weaken as more 3D graphics hardware suppliers entered the market. In an effort to influence the market, SGI decided to turn the IrisGL API into an open standard – OpenGL.

Aktualizacja:
Pomyliłem 3dfx z 3D Labs. To 3D Labs przyczyniło się do stworzenia GLSL.

Poczytałem też trochę i wychodzi na to, że zupełnie osobnego programowalnego własnościowego API raczej nie było, ale za to były niekompatybilne ze sobą rozszerzenia OpenGL. Dużo ciekawych informacji jest tutaj: https://www.khronos.org/opengl/wiki/History_of_Programmability


"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
LS
Glide to nie było czasem tylko fixed pipeline?
Wibowit
hmm, sam nie wiem. pamiętam tylko, że 3dfx pracowało nad specyfikacją shaderów w OpenGL, więc założyłem, że wcześniej mieli już jakieś doświadczenie ze shaderami. sprawdzę to potem.
LS
Ok, pytam bo kojarzy mi się że pierwsze uelastycznianie potoku rozpoczęło się dopiero jak Nvidia wprowadziła wsparcie dla T&L w Geforce.
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:minuta
  • Postów:8408
0

Poza wspomnianymi przez przedmówców dodałbym takie czynniki jak powstanie napędów CD-ROM (w połowie lat 90 dopiero się to spopularyzowało). Na dyskietce można było zapisać 1,44 megabajta (wiele programów instalowało się z wielu dyskietkach), a na płycie 650 megabajtów. Więc w jednej grze mogło się zmieścić więcej danych (więc i więcej grafiki, dźwięków, filmików-przerywników, kodu, map itp.). A potem i to się powiększyło, bo gry były na kilku CD-ROMach, a potem na DVD, czy wreszcie, w dobie szybkiego internetu, ściąga się je przez internet.

A ciężko sobie wyobrazić grę, która ma 5 gigabajtów i jest instalowana z tysięcy dyskietek. To jest jeden z powodów, dla którego wcześniej nie mogły powstawać zaawansowane gry (nie mówię, że najważniejszy - ale nie chcę po prostu powtarzać tego, co już było wspomniane przez przedmówców).


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)