Kreatori i alati: Srđan Krsman, game i veb developer

Srđan je freelancer sa iskustvom dugim pet godina, koji je za ovaj vikend spakovao sve važnije alate koje koristi u jedan tekst.

Sanja Vatić - 2. Novembar, 2019.

Srđan je freelance programer sa pet godina iskustva u industriji. Područije delovanja mu je Game Dev i Web Dev. Kaže da ga je ovaj posao prvenstveno privukao iz strasti jer voli da pravi igre. Ono što mu je omiljeno u pravljenu igara je rešavanje problema i uspostavljanje arhitekture softvera, a voli i da debuguje.

Uz već pomenuto iskustvo u industriji, Srđan je i jedan od osnivača neprofitne organizacije Indiestellar, koja se bavi organizovanjem game jam-ova, game development meetup-a i deljenjem znanja i informacija vezanih za indie video igre i razvoj istih.

Hardware

Moja radna mašina je DELL Latitude E6540, malo starija, SSD 128 GB što mi radi posao jer relativno često menjam operativni sistem i sve od fajlova što preživi malo duže na laptopu prebacujem na Transcend eksterni HDD. Sad sam sa 12 GB RAMa, što mi radi posao i za veb i za game development. Stalno planiram da uzmem RAMa da dignem na 16, ali uvek zaboravim jer za sada ne nailazim na poteškoće tokom rada.

Na laptop priključujem dodatni Asus monitor, miš i tastaturu i zvučnike.

Mobilni uređaj mi je Honor 8 na Android 7 koji je još uvek sasvim okej za testiranje igara koje razvijam za Android i za igranje konkurentskih igara. Sasvim je stabilan i prilično sam zadovoljan, nije još pokazao znakove da ga treba menjati.

Software

Verujem da za svaki posao postoji pravi alat, tako da zavisno od toga šta radim biram koji alat ću da koristim.

OS

Trenutno sam na Linux Mint Cinnamon 19.1 koji je prilično stabilan, mada je Cinnamon desktop environment počeo da razočarava grafičkim bagovima, tako da se trenutno troumim da li da ga update-ujem, promenim desktop env ili da pređem na Ubuntu. Razlog zbog kojeg nisam već na Ubuntu je zapravo što sam, kada sam prelazio na Linux, hteo da me snađu te razlike između Ubuntua i Minta da bih ga bolje naučio. Mint je moj OS of choice trenutno. Ubuntu je svakako mnogo bolje dokumentovan, ali mnoge stvari za Ubuntu važe i za Mint.

Ponekad koristim i Windows, zavisno od toga šta ću da radim u sledećem periodu, istražim šta će mi biti potrebno od alata i koji OS zadovoljava moje potrebe.

Game Dev

Za Game Development koristim Unity3D, trenutno na Linuxu, mada šetam između Win/Lin. Znatno su poboljšali stabilnost i funkcionalnost u 2019.x verzijama i veoma se radujem tome što najavljuju punu oficijelnu podršku za Linux od verzije 2019.3.

Unity uveliko upotpunjuju asset-i. Od važnih asset-a izdvojio bih DOTween koji je veoma koristan objektno orijentisani animation engine, za multiplayer tu je Photon, i Vuforia za AR.

Alternativa za Unity bi svakako bio Godot — open source game engine koji sve više napreduje. Mislim da ga čeka svetla budućnost.

Za pisanje C# skripti na Linuxu koristim VS Code koji je oficijelni Unity Code Editor, ima ekstenzije za debugger, unity snippets, bookmarks, auto-using for C#. Sam VS Code ima neke code completion bagove, ali očekujem samo napredak u budućnosti. Alternativa za njega je MonoDevelop koji radi, mada postoje problemi sa podešavanjem debugger-a za Unity, tako da više nije baš ugodno iskustvo koristiti ga, Microsoft se ipak fokusirao na Code. Na Windows-u je, naravno, Visual Studio ubedljivo vodeći dev alat za Unity.

Web dev

Radim backend na Python 3.x na Django framework-u.

U ovom okruženju mnogo veću ulogu igra IDE nego u Unity game devu. Za pisanje koda koristim Pycharm, koji je bez preterivanja najbolji IDE koji sam ikada koristio. Stabilan, mnogo korisnih prečica, ubrzava workflow, dobra integracija sa gitom i najbolji code completion koji sam video, auto import, sve ima. Besplatna verzija radi odlično, a u plaćenoj ima synthax highlightning i za html i css i dodatke za Django, što samo još više pomaže. VS Code bi bila alternativa, ali ne na tom nivou kvaliteta, u njemu može lepo da se kuca frontend doduše, što je skroz ok. 

Od libova za Python kao značajne bih pomenuo:

Bokeh — veoma moćna biblioteka za vizualizaciju koja generiše html,

Numpy — višedimenzionalni C nizovi u Python-u,

IPython — nadograđena Python komandna linija,

Jupyter — notebook za Python koji pokreće server lokalno i radi u veb-pregledaču. 

Od Python libova za Django izdvajam: Jinja2Django debug toolbar i Django rest framework.

Frontend

Što se tiče frontenda i JS-a u procesu sam učenja. Alati sa kojima sam se susretao a vredni su pomena su naravno NPM — node package manager i gulp — alat za automatizovanje taskova pri bildovanju frontenda.

Verzionisanje koda

Koristim git uz pomoć gitk programa. Za hostovanje repozitorijuma bude uvek neki od navedenih: Bitbucket, Gitlab ili Github (omiljeni). Što se tiče praćenja tehničkih taskova Issue system mi je omiljeni način, mada tu je i Trello.

Komunikacija

To su standardno Discord, Slack, Telegram, Skype, Hangouts. Nedavno sam otkrio Whereby, radi na principu sobe i jednostavan je za korišćenje.

Ostalo

Od pregledača koristim Firefox i Chromium (open source verzija Chrome-a), a od ekstenzija: Tab Session Manager, Ad Block Plus, Leech Block, SimilarWeb. Svi postoje i na Firefox i na Chrome marketu. I još:

Virtualbox — softver za virtualizaciju, jako mi se sviđa njegov jako jednostavan i koristan snapshot system,

Zim desktop wiki — za hijerarijske beleške,

ToDoList — program za Windows sa jako detaljnim sistemom za planiranje,

Remarkable — jedostavan grafički Markdown editor i exporter,

Pandoc — softver u komandnoj liniji za konvertovanje markup fajlova (Linux only),

Sphinx — za generisanje dokumentacije,

Filezilla — FTP upload/download,

Redshift — čuva oči Linuxašima. Za Win postoji f.lux.

Shutter za Linux i LingShot za Windows/Mac — za pravljenje i editovanje scheenshot-ova,

Readthedocs — servis za hostovanje dokumentacije,

DuckDuckGo — defoltni pretraživač koji koristim. Za tehničke stvari radi odlično, zna šta programeru treba. Doduše, ipak nekad moram da upalim Google, ali u veoma malom broju slučajeva. Ima svoje bangove koji ubrzavaju pretragu.

Naravno, tu je i Google stack — Drive, Docs, Sheets, Calendar koristim za ono što im na kraju krajeva i jeste namena.

Menadžovanje beleški i taskova

Što se tiče beleženja stvari uvek imam nekakav blokčić, svesku i hemijsku olovku, notepad na telefonu, foldere na PC sa tekstualnim fajlovima, drive dokumente… Zapravo su mi beleške svugde. Beleškama i planovima pristupam tako što forsiram da prođu više iteracija pre nego što dođu na red da se odrade. Tako npr. imam privremene dokumente koji vremenom nestaju ili evoluiraju.

Vodim se i time da je ono što fizički stoji negde hitnije i ostavljam papire da naletim na njih na stolu. Tu obično stoje kratkotrajni taskovi. Gledam da ih ne gomilam jer onda oguglam na njih i oni postaju nered. Ako stoje malo duže i krenu da se gomilaju onda ispitujem da li je to stvarno važno u ovom trenutku — ili da li je realno da se odrade u nekom doglednom vremenu.

To se dešava jer u praksi jedan task može biti sastavljen od mnogo podtaskova koji ne moraju biti jednostavni, otud toliko komplikovanja.


Ukoliko želite da budete deo rubrike Kreatori i alati, pošaljite nam svoj CV i/li portfolio na mail redakcija@startit.rs.

Pridruži se → prvo predstavljanje rada Tesla Nationa