Thursday, November 29, 2007

Splatting material in Ogre

Am lucrat 2 zile si doua nopţi pana am reuşit sa înţeleg si sa implementez splatting textures in Ogre. Totul părea simplu la început dar nicicum nu am reuşit sa-l adaptez la terrain scene manager-ul simplu. Iata câteva screenshoturi, după care am sa postez fişierul de material.













material robisplat
{

lod_distances 300

technique
{
lod_index 0
pass
{
// Base Pass
ambient 1.0 1.0 1.0
diffuse 1.0 1.0 1.0
texture_unit
{
// Base Texture
texture none
tex_address_mode clamp
alpha_op_ex source1 src_texture src_texture
colour_op_ex modulate src_current src_texture
}
}
pass
{
// Snow Pass
ambient 1.0 1.0 1.0
diffuse 1.0 1.0 1.0
scene_blend alpha_blend
depth_func equal
texture_unit
{
// Snow Alpha map
texture none
tex_address_mode clamp
alpha_op_ex source1 src_texture src_texture
colour_op_ex source1 src_current src_current
alpha_rejection greater_equal 2
}
texture_unit
{
// Snow Splat
texture splatting0.png
tex_address_mode mirror
alpha_op_ex source1 src_current src_current
colour_op_ex source2 src_current src_texture
scale 0.01 0.01
}
}
pass
{
// Sand Pass
ambient 1.0 1.0 1.0
diffuse 1.0 1.0 1.0
scene_blend alpha_blend
depth_func equal
texture_unit
{
// Sand Alpha map
texture texture none
tex_address_mode clamp
alpha_op_ex source1 src_texture src_texture
colour_op_ex source1 src_current src_current
alpha_rejection greater_equal 2
}
texture_unit
{
// Sand Splat
texture splatting1.png
tex_address_mode mirror
alpha_op_ex source1 src_current src_current
colour_op_ex source2 src_current src_texture
scale 0.03 0.03
}
}
pass
{
// Grass Pass
ambient 1.0 1.0 1.0
diffuse 1.0 1.0 1.0
scene_blend alpha_blend
depth_func equal
texture_unit
{
// Grass Alpha map
texture texture alpha_Alpha2.dds
tex_address_mode clamp
alpha_op_ex source1 src_texture src_texture
colour_op_ex source1 src_current src_current
alpha_rejection greater_equal 2
}
texture_unit
{
// Grass Splat
texture splatting_rock.png
tex_address_mode mirror
alpha_op_ex source1 src_current src_current
colour_op_ex source2 src_current src_texture
scale 0.02 0.02
}
}
pass
{
ambient 1.0 1.0 1.0
diffuse 1.0 1.0 1.0
scene_blend alpha_blend
depth_func equal
texture_unit
{
// Rock Alpha map
texture alpha_Alpha1.dds
tex_address_mode clamp
alpha_op_ex source1 src_texture src_texture
colour_op_ex source1 src_current src_current
alpha_rejection greater_equal 2
}
texture_unit
{
// Rock Splat
texture splatting5.png
tex_address_mode mirror
alpha_op_ex source1 src_current src_current
colour_op_ex source2 src_current src_texture
scale 0.01 0.01
}

}



}

technique {
lod_index 1
pass
{
ambient 1.0 1.0 1.0
diffuse 1.0 1.0 1.0
texture_unit
{
// Base Texture
texture tree1leaves.png
scale 1 1
tex_address_mode clamp
}
}
}

}




Monday, November 26, 2007

Sa tesam frumos

:: Am fost sa-mi cumpăr plăcute de frâna la maşina
:: Dar nu aveau
:: Asa ca am comandat-o pe mâine
:: Am si lăsat bani
:: E frig
:: Da' măcar ninge
:: Un cretin si-a parcat maşina in fata garajului
:: Dar am reuşit sa-l ocolesc

Ok, gamedev:

Screenshots:




Terrain: WorldMachine
Texture: Splatting (with T2 texture generator)

Mai mult, in curand...

Tuesday, November 20, 2007

Proiecte finisate: (STICKY)

My own:

- Procedural planet texture generator and manager
gen: research/project/component
limbaj: C#
extra: D3D9, noiselib

- Reseacrh paper TDK
gen: conference


Impossible SRL:

- Coolspace (www.coolspace.cz)
gen: mobile software distribuitor website
limbaj: PHP
extra: mysql

- SMS gateway
gen: gateway (recieve/send sms data / wap push, repack JAD/JAR)
limbaj: PHP
extra: SOAP, mysql, libzip

- Backend for coolspace
gen: CMS
limbaj: PHP
extra: mysql, fpdf lib, ajax (nAjax lib)

- Partner system for coolspace
gen: affiliate management software
limbaj: PHP
extra: mysql, fpdf, libchart, barcode


Ethos AS:

- InciNet
gen: reporting software
limbaj: PHP
extra: mysql, fpdf

- KeyNet
gen: reporting software
limbaj: PHP
extra: mysql, fpdf, libchart

- FormNet
gen: reporting software
limbaj: PHP
extra: mysql, fpdf, libchart

- Klassifiering
gen: hotel chain management
limbaj: PHP
extra: mysql, fpdf, libchart


RentACoder:

- Varmentema AS
gen: website
limbaj: PHP

- iDev Affiliate extention (Omica healthcare)
gen: affiliate management software extention
limbaj: PHP
extra: iDev affiliate, ionCube (code obfuscation)

- Hotel raport
gen: reporting software
limbaj: VisualBasic 6
extra: Excell DB

- 3D hangman
gen: game
limbaj: VisualBasic 6
extra: DirectX8.1, 3dstudiomax, paintshop pro

Tuesday, November 13, 2007

Java si Irrlicht (jirr)

Ieri am găsit o competiţie interesanta pe gamedev.ro la care am decis sa mă înscriu împreună cu nişte colegi de serviciu. http://gamedev.ro/forum/topic/634

Pe scurt: trebuie făcut un joc FPS cu minimum un nivel de joc, si sa fie accentuate efectele de zăpada. (everything goes)

Am decis sa folosim engine-ul Irrlicht (http://irrlicht.sourceforge.net/), un engine open source pe care sa bazam jocul. Fiind cu toţii momentan programatori Java, am decis sa exploram posibilităţile de a crea un FPS in Java. Spre norocul nostru exista multe projecte in acest domeniu, unul ar fi "jirr" (adica: java irrlicht http://jirr.sourceforge.net/)

Jirr este un Binding pentru Java al librăriilor IrrLicht (varianta Windows sau Linux). Prin IrrLicht se abstractizează funcţiile avansate DirectX sau OpenGL, ceea ce permite ca logica jocului sa fie scrisa in Java, iar reprezentarea grafica sa fie efectuata de driverele accesate prin IrrLicht. (OpenGL, Dx9, Dx8 prin engine)

Configurarea si "first run" nu a fost greu. Singurul lucru pe care l-as menţiona e sa setaţi un path către irrlicht_wrap.dll. Sub windows am setat un work-directory care conţine wrapperul.


- un heightmap exportat din terragen si incarcat in jirr (ITerrainSceneNode) -

Wednesday, November 7, 2007

A new term: "bloggerfucher"

I have a new term: "bloggerfucher". In a sentence: "He is a dirty bloggerfucher!"

Bloggerfucher - to fuch one's blog -> to post useless entries about worthless crap

The author of this post is a bloggerfucher.

Scenariu si AI - cat de greu e sa fii batut la sigur de calculator

Azi am pornit la lucru devreme. M-am pus frumos la birou, am pornit NetBeansul si i-am dat drumul la codat. Acum e timpul sa beau un ceai, si sa postez ceva despre progres.
La ce lucrez? La Warlord Castels mobile, mai specific la campaniile speciale, care necesita multa atenţie si codare speciala.

Acum sunt la misiunea a 9-a, in care eroul principal este învins, el urmând sa treacă pe viată de dincolo. (unde continua povestea) Scriptul care controlează jocul, aşteaptă condiţia de victorie a playerului controlat de AI, ca sa continue cu un cut-scene in care eroul principal sa îşi adune puterile pentru un ultim atac, iar după 100 de secunde sa fie învelit de valurile nesfârşite de unităţi controlate de AI.

Fiind o misiune la punctul culminant al jocului, am decis sa fac nivelul cat se poate de balansat, ca jucătorul sa muncească din greu pana este învins. Am vrut sa fac lupta in aşa fel încât jucătorul sa fie forţat sa joace defensiva.
Am si pornit AI-ul in mod SPAMMER cu 10 unităţi puternice pre-create, si cam de 10 ori mai multe resurse iniţiale, plus o baza deja avansata.

Din un motiv inca necunoscut, si asa este uşor sa înving calculatorul, daca mă apuc in serios de joc. Având nevoie de o infringere 100% acest lucru este inacceptabil.

Ar fi uşor sa îl fac pe jucător sa piardă in 10 secunde, daca îl pornesc cu f. puţine resurse, dar aşa nu va simţi greutatea faptului ca urmează sa fie învins (crezând ca va pierde jocul).

Aşa ca am decis sa îl las sa se joace câteva minute (3-5) după care daca nu e învins pierde jocul. Totuşi, daca nu reuşeşte sa se apere in timpul ăsta, atunci chiar va pierde jocul. Probabil am sa folosesc un timer, care afişează un mesaj asemănător: "Defense time remaining: 3:50"

Tuesday, November 6, 2007

Bang a drum for the author

Cine mai citeşte blogul asta? Ping la toţi cititorii.

Pinging this.blog [*] with a few bytes of data:
[

Nu continui idea, o înţelegeţi voi...

Alta tema: in ultimul timp am observat tonul critic al unor utilizatori de pe forum in special in legătură cu un oarecare "off topic" in bloguri sau posturi.

Exemple ar fi postul lui zeltera: http://www.programare.org/weblog_entry.php?e=432
sau postul/blogul lui DSH http://www.programare.org/viewtopic.php?t=2829 sau chiar si reclama de blog postata de Olivia :)

Nu înţeleg de ce ii deranjează pe unii faptul ca se mai postează cate-o data articole care sunt "altfel", care deseori personalizează oamenii care postează aici pe (programare.org). Forumul pe de alta parte e cam lipsita de viată. De a posta ceva off topic nu mi se pare ca ar trebui eradicat de pe forum, ci dimpotriva "observata" (nu neapărat susţinută), fiindcă colorează topicurile obişnuite, abordate cu multa rigoare de profesionişti ce suntem..

Am si eu un blog aici pe site, pe care îl doresc sa fie cat se poate de "profesional" si la obiect, dar totuşi simt nevoia de libertate de exprimare sa postez pe blogul MEU ce doresc. Din motiv sa nu fiu "atenţionat", avertizat sau reamintit de faptul ca acesta este un forum obiectiv fata de domeniul informaticii: fără interpretări si strict profesional,

[ deschid o propoziţie noua, ca cealaltă e cam lunga si se pierde firea ]

am deschis un nou blog, care conţine toate posturile de aici, dar in plus, va conţine si unele "chestii" care ţin de personalitatea mea sau ideile mele despre orice mi-ar trece mie prin cap..

In ceea ce priveşte programare.org: am inţeles, e despre programare, sa o ţinem la subiect. Ok, dar sa nu trimitem pe nimeni acasă. Suntem oameni in primul rand si programatori dupa. Eu personal când citesc un blog de profil, mă interesează mai mult modul in care reuşeşte acel individ sa se afirme in domeniu. Cum e sa trăieşti in mediul acela ca si om. Are mai mult sens decât sa aflu cate linii de cod are Myriad, sau cum s-au scris 8 rânduri geniale de cod într-un proiect pe care nu îl poate elabora semnificativ autorul..

Ping: Cine mai citeşte blogul ăsta ?