Taková klasická otázka, jak to teda vypadá právě teď?
Co teď?
Jak vidno z videa, už to není taková tragédie co to byla, ale zatím demo má tolik much, že není publikovatelné. Rozuměj, hra je sice z takových 90% hratelné stránky hotova, ale prostě občas spadne, občas se sekne, něco chybí a ták.
Co bude?
Nikdo neví, vyvíjíme pořád dál, na #Petrovi jsou teď modely arén a mě zbývá pár posledních dodělávek v enginu - právě teď jen asi 21. Příští měsíce znamenají volno jak v ústavu, tak v práci, takže snad se zadaří a do konce května spíchneme zbytek co ještě chybí a zahájíme testování formou veřejné betaverze. Ikdyž nikdo neví, jak to bude.
Ironie, jak se to datum posunuje že? :D
Hra již začíná být hratelná, na takové úrovni, že to není jenom honění po levelu a nevědění co děláme. Volná betaverze k testování bude vypuštěna přibližně na konci března a po té bude vydáná kompletní placená verze ve formě digitální distribuce vázané na hráčský účet.
Díky sázce mezi mnou a #Standou, kdo z nás dvou vyvine od září 2009 do konce června 2010, použitelný engine který je schopný realtime, vyrenderovat level vytvořený v libovolném 3D softu a spočítat sním kolize, vyhrál jsem. Jelikož mne programování 3D aplikací pro PC a konzole chytlo, tak jsme s #Petrem, rozjeli na stávájícim #XMEngine1 FPS střilečku, přibližně rok a třičtvrtě jsme dělali na tomto projektu, já jsem provedl asi 5 přepisů kompletně celého enginu a 9 přepisů hlavních formátů enginu. Bohužel pro projekt, jsme zjistili, že jsme se narodili o deset let později a, že s tímto projektem máme nulovou šanci uspět na českém trhu s indie hrami, protože konkurence v roce 2011 byla, je a bude veliká. Tudíž jsme začali přemýšlet, co tak udělat nového, co ještě na trhu není a co by mohlo duté hlavy hráčů chytit.
Při jedné naprosto náhodné komunikaci na ICQ s #Petrem jsem plácl, jaká prdel by byla, kdyby jsme udělali něco na styl bombermana v 3rd person a ejhle, nápad byl tu. Tím vznikl tedy námět na Projekt1 který nám dodal podnět nezahálet a začít pracovat na něčem co by nás mohlo zajistit v době, kdy už vklady na penzijní fondy stojí za hovno :)). Práce na tomto projektu začla v půlce září 2011, kdy jsme si nebyli jisti, že to dotáhneme do konce, ale makali jsme. Dnes je 10.2.2012, je to něco okolo 5,5 měsíce přerušované práce, kdy jsem střídal práci a školu s honením bab a tak podobně. Engine prošel dalším přepisem, pro přizpůsobení z FPS do 3RD person a hlavně, dostal ode mne nové sítě a to byl ten největší dárek, díky kterému se hra dá prostě hrát, no nic, konec keců.
Jak to teda vůbec vypadá?
Tady je tedy jedno video z testování hry - její alfa verze a ladění bugů. Nesestříhaný online záznam, bez úprav videa kromě vložení intra a začátečních titulků. Jak jsem již psal, je to video z alfaverze, dne 9.2.2012, která byla hodně zavšivená a byli jsme rádi, že jsme hráli, ale pracujeme dále a co bylo včera, dnes již není, takový to u nás prostě je :D.
P.S jsme zvědaví, do kdy se nám podaří vyfixovat všechny bugy a dostat to s online systémem do takového stavu, že vydáme veřejnou betaverzi. Můj osobní odhad je konec měsíce března a to jsem takovej zkreslenej realista, uvidíme jak to ještě všechno půjde :).
Asi nejvíc jsme řešili problémy s interpolacemi pozic v multiplayeru, tady je řešení, na síti není moc konkrétních kódů a když uplně začínáte, je problém to pochopit (mluvím z vlastní zkušenosti :)), tady je jeden, který zastane všechno.
V našem enginu timeBetweenPackets průměrujeme, update rate je 0.005s.
#define interpDelta 1.25 //delta kterou se dá regulovat přesnost interpolace
class InterpolatedEntity
vec3 pos;
vec3 vel;
public:
void update(float dt)
{
pos = pos + vel * dt;
}
void setNewTarget(vec3 newTarget, float timeBetweenPackets)
{
vel = (newTarget - pos) * (interpDelta / timeBetweenPackets);
}
vec3 getPosition()
{
return pos;
}
};
Použití:
InterpolatedEntity netwEntity;
//timeBetweenPackets = čas jednoho odeslání paketu,
//což znamená že odešleme jeden ping paket změříme čas
//jeho letu a vydělíme dvěma, abychom dostali one-way time.
//position = pozice pro korigování směru entity
netwEntity.setNewTarget(position, timeBetweenPackets);
//dt = aktuální čas mezi framy, to už musí zajistit timer
netwEntity.update(dt);
//inPos = interpolovaná finální pozice
inPos = netwEntity.getPosition();
Dřevěné žebřiny pro cvičení doma i tělocvičny. krbová kamna. Moderní zdravotní matrace, které pomáhají od bolesti zad- matrace UNAR. Oblékáme se stylově - oblečení a hip hop oblečení