Wpis z mikrobloga

Jeżeli chodzi o rozwój w danej dziedzinie i pierwsze sukcesy, to muszę wam powiedzieć jedno.

Nie dzieje się on z dnia na dzień. Ani z miesiąca na miesiąc.

To najczęściej lata rozwijania danej umiejętności. Sam o tym kiedyś nie wiedziałem. W 2011 roku jak podchodziłem do nauki rysunku i widząc tych wszystkich artystów powiedziałem sobie, że wystarczy mi miesiąc i też będę tak rysować jak oni.

Gdy w 2010 roku podchodziłem do tworzenia gier chciałem tworzyć gry MMoRpg pokroju World of Warcraft nie znając ifów i pętli for.

Gdy 2009 roku złapałem za gitarę, myślałem, że po roku znajdę zespół, z którym odniosę sukces i stanę się sławny niczym Nirvana.

Nic bardziej mylnego.

Analizując sukcesy kolegów z Wykopu, czy nawet poza. Wszyscy pracowali na sukces latami.
Czy to @rezoner który w jednym z komentarzy napisał (z tego co pamiętam), że od 10 lat programuje i coś tam działa w GameDevie i dopiero Wilds.io stało się jego poważnym sukcesem. (popraw mnie jeżeli się mylę).

Czy to nawet @TadeuszSynZygmunta który mimo, że programuje gry od 2-3 lat, a grafiką zajmował się już wcześniej, to poważny sukces odniosła jego ostatnia gra.

I bym mógł tak wymieniać inne sukcesy innych kolegów, z którymi komunikowałem się w prywatnych wiadomościach, ale poprzestanę na tych, które były podzielone się publicznie :)

Na sukces składa się wiele czynników. Pierwszym jest ciężka praca. Na nią mamy wpływ. Więc na niej powinniśmy się skupić. Na budowaniu wiedzy, na uczeniu się nowych algorytmów, rozwijaniu własnego kunsztu rzemieślniczego.

Drugim są kontakty. Nawet nie macie pojęcia ile może wam dać, że znacie daną osobę. Że pójdziecie danego dnia na daną imprezę branżową i poznacie odpowiednie osoby. To może poskutkować pracą z ciekawymi ludźmi i w ciekawej firmie :) (jeżeli jeszcze takiej nie macie).

Trzecim jest reklama. Aktywność w mediach społecznościowych pozwala poznać ciekawych ludzi i zebrać nowe kontakty, których bez Twittera/Slacka/Wykopa/Fejsa byłoby trudno.

Czwartym jest szczęście. Na nie nie mamy wpływu. Ale jeżeli akurat będziemy w odpowiednim czasie w odpowiednim momencie, albo stworzymy produkt który będzie pasował pod rynek.... wtedy mamy sukces.

Prosty przykład. Tablety istniały już wcześniej. Smartfony istniały już wcześniej. Ale to dopiero firma Apple wprowadzając na rynek iPhone i iPady w odpowiednim czasie (odpowiedni rozwój technologiczny) i przy pomocy ogromnej reklamy odniosła sukces jakiego nie odniosła żadna firma wcześniej.

To samo tyczy się gier. Kultura zmienia się szybko. Te same gry i ta sama mechanika, która działała 5-10 lat temu nie będzie działać dzisiaj. Gracze się zmienili. Stali się dojrzalsi (jedna grupa przynajmniej).

Dlatego tak ważny jest rozwój w dzisiejszych czasach. Gdybyście na rok wyszli z obiegu, to czy wiedzieliście by o przełomie VR? O nowej generacji konsol +? O tym, że gry AR typu pokemon z odpowiednią silną marką są w stanie odnieść sukces?

Pewnie. To wszystko istniało już wcześniej. Choćby Ingress, czy pierwsze newsy o VR. Ale branża tym nie żyła.

Co możesz na to poradzić? Ty jako osoba?

Nie przestawać się rozwijać i liczyć czas wstępnego rozwoju na 2-4 lata.

I mówię tu o osobach, co pytają się o książki do programowowania, strony, kursy etc.
Nawet nie macie pojęcia jak szeroka jest dziedzina programistyczna :)

Poza samą znajomością funkcji, pętli i generalnie rzeczy klepanych (teoria książkowa) są o wiele ważniejsze rzeczy, które sprawiają problemy. Najefektywniejsze algorytmy. Ograniczenia pamięci. Ograniczenia sprzętowe. Ograniczenia softwarowe. A to tylko czubek góry lodowej :D

A to jeszcze nic. Bo dochodzi jeszcze ux design aplikacji, ingerencja użytkownika, testy, bezpieczeństwo...

Wiem, że na każdą z tych dziedzin jest przydzielona odpowiednia osoba w firmie, jak na nią firmę stać, ale w Start-Upie wszystko prawdopodobnie będzie na waszej głowie ;) (albo przynajmniej większość).

Na wstęp polecam:
https://projecteuler.net/
http://pl.spoj.com/problems/latwe/

Od groma matmy i będziecie musieli posiłkować się Wikipedią i pewnie na początku trochę wam czasu zejdzie przy niektórych zadaniach... ale nie martwcie się. Mi też przy niektórych dni schodzą :)

Poza tymi sprawami co wymieniłem powyżej w rozwoju jest też ważne nastawienie.

"Nie chce mi się czytać Prata, ale muszę bo potem będę miał 15k na miesiąc".

W takiej sytuacji będziesz czytać i nic z książki nie wyciągniesz, bo nie będziesz się skupiać na tekście tylko odpływał myślami gdzieś daleko. Wróć do niej jak naprawdę będziesz się chciał nauczyć. I coś z niej wynieść.

W programowaniu przede wszystkim ważne jest myślenie i kojarzenie faktów. Łączenie ze sobą "bloków" myśli.

Jeżeli muszę wykonać czynność "x" to warto by było użyć do tego metody A, funkcji B oraz C. Jeżeli to nie zadziała, to może spróbuję z funkcją D.

I w dużej mierze programowanie polega na początku na testowaniu i sprawdzaniu wyniku.

Ale nie zapędźcie się... bo będziecie robić tak jak ja kilka lat temu, co na oślep wpisywał byle co licząc, że komputer mu zwróci odpowiedni wynik :D

Zanim cokolwiek napiszecie na komputerze warto sobie rozpisać to na kartce. Algorytm, sposób działania, przepływ informacji. Na początku pewnie nie będziecie wiedzieli co pisać na kartce, ale przy większych projektach sposób działania aplikacji będzie dla was kluczowy :)

Nie wiem czy komuś pomoże mój wpis. Jak tak. To dobrze. Jak nie. To tłudno :)
Jak ktoś walnąłem jakąś gafę, to można mnie poprawić :D

#gamedev #naukaprogramowania #motywacja
  • 20
@Rezix: A skoro już piszę z kimś bawiącym się dłużej w to słynne kucowanie to dopytam:
- wykorzystujesz coś do UMLa?
- jest jakaś strona z opisanymi projektami gier(nie chodzi mi już o samą implementację)?
@Leinnan: Pod Javę tak.

Jak pracujesz pod Eclipsem: http://www.objectaid.com/

Jak używasz czegoś pod produkty JetBrainsa, intellij na przykład to bodajże miał on to wbudowane, ale nie daję 100% pewności :)

Projekty gier?

Chodzi ci o skończone projekty, czy analizę gier komputerowych?
Bo jeżeli chodzi o analizę to znam dwa fajne kanały:

Game Marker Toolkit:
https://www.youtube.com/user/McBacon1337/

Albo:
Game Soup:
https://www.youtube.com/watch?v=c_0sjTBzCW0

Tu masz na przykład analizę tworzenia poziomów w Cave Story, która jest
@tomekswk: Jak pracujesz/uczysz się to starasz się zagospodarować godzinę-dwie dziennie.

Wracasz z pracy/szkoły o 16/17. Jesz obiad. Robisz przerwę i każdego dnia. Ale to dosłownie każdego o 19-20-21 na godzinę siadasz się i po prostu robisz to co masz do zrobienia.

Wybierasz jakieś zadanie. Na przykład zaprogramować fizykę odbijania się obiektów w Javie/Unity3D/danym silniku i starasz się w ciągu godziny je zrealizować. Nie uda się? Robisz to jutro. Jutro się nie
@Rezix: Czy na prawdę na wykopie musi być osoba która pisze takie oczywiste rzeczy? :D

A tak bardziej do tematu... nigdy nie wytrzymałem na spoju itd dłużej niż 20 minut, te zadania może i są często trudne i warte poznania, ale ich wykonywanie to najnudniejsza możliwa rzecz dla mnie. Wolę się na to natknąć kiedy będę coś tworzył, i wtedy nauczyć się tego na realnym przykładzie, inaczej nic z tego... tak