Bilijar

Peruzzi

Domaćin
Poruka
4.066
Nista posebno, klasican 2d, posto se ne bavim grafikom uopste, tu necu da zalazim suvise, neka jednostavno bude na nivou onih kineskih konzola sto su se pre kupovale na buvljaku za 10 maraka, dovoljno. easy2use i pregledno
bitna mi je fizika

e sad - saveti od iskusnijih, ako ste upuceni malo
kako da pocnem?
kako da postavim ceo model?

mislim, samo mi kazite kako da krenem, posto imam neke ideje, ali bih da pocinjem ako ne mogu sa nima nista da uradim. pa posle dzabe da bacam sveske ;)
 
prosto:

zakon odzanja impulsa, loptica ne moze da izleti van nekog pravougaonika , i savet, napravi u javi , i moraces da sinhronizujes dogadjaje.......
 
e sad ponovo citam post, i sto sam ga napiso svaka mi mast...sam sebe nista ne razumem :lol:

svi mi savetuju u javi. sto bre? sad moram da ucim javu...grmpfh.mrzi me. ma ajd.
jedan lik mi inace rece (iskusan inace, dugo se vec bavi programiranjem) da bi on najradije to radio u cu, a za grafiku koristio allegro.lib......hm?

snasao sam se za fiziku. sredicu vec te formule i sve to.
ono sto me muchi - izlaz. kakav da bude? najlogicnije je da se stalno updatuje pozicija svih lopti na stolu, x,y koordinate.
druga stvar - putanje kretanja

kako sam razmisljao da sve to sredim

ajd da uzmemo da sam lupio belu i da ona sad pichi, odbije se od martinele i upadne u rupu ili stane. bez sudaranja

dobijem ulazne podatke o udarcu (jacina, smer)

zavisno od smera i trenutne pozicije lopte odredim mesto udarca u loptu, i nadjem smer njenog daljeg kretanja po nekoj tamo formuli. sile isto racunam.

udjem u petlju i menjam x,y koordinate lopte kako vreme prolazi, paralelno menjam jacine sila koje deluju. kada neka od vrednosti x,y dodje do neke od granicnih vrednosti (martinela) poziva se funkcija koja uzima trenutne vrednosti sila i smer, i vraca nov smer (odbijanje) i sile koje nastavljaju da deluju
nastavljam petlju dok god x,y koordinate ne budu neka od sest rupa, ili sile ne budu = 0, pa lopta stane.

onda bi mi izlaz jednostavno bio nesto oblika

Lopta | x | y | F1 | F2 | F3
====================================
0 | 12 | 18 | 23 | 118| 234
1 | 18 | 43 | 0 | 0 | 0
2 | 56 | 42 | 0 | 0 | 0
3 | 3 | 53 | 0 | 0 | 0
4 | 75 | 73 | 0 | 0 | 0
5 | 0 | 50 | 0 | 0 | 0
6 | 56 | 45 | 0 | 0 | 0
7 | 53 | 49 | 0 | 0 | 0
8 | 22 | 53 | 0 | 0 | 0
9 | 11 | 67 | 0 | 0 | 0
10 | 80 | 0 | 0 | 0 | 0
11 | 80 | 50 | 0 | 0 | 0
12 | 0 | 80 | 0 | 0 | 0
13 | 67 | 46 | 0 | 0 | 0
14 | 94 | 54 | 0 | 0 | 0
15 | 56 | 48 | 0 | 0 | 0

Crvenom bojom sto je obelezeno te cifre ce onda stalno da se menjaju (cisto da ne pobrkate nesto)
A plavom bojom sam obelezio lopte cije su koordinate namerno ovako podesene.

Ako je sto npr 80x100 velicine. onda rupe stoje na 0,0 0,50 0,100 80,0 80,50 80,100
i ako je lopta na tim koordinatama znaci da se ona ne prikazuje jer je potopljena u toj rupi i nije vise u igri
Ako bih radio ovako onda bih sve podatke o loptama mogao da stavim u jedan niz
ili bi to bilo previse tesko za varenje procesoru?


Ili da menjam pristup?
 
svi mi savetuju u javi. sto bre?
Ne znam, ni meni nije jasno. Verovatno ni njima.


Drugo, oko te fizike treba ti par stvari :
- dinamika kretanja
- collision detection
- collision resolving

-Dinamika kretanja je jednostavna (ako izbacish rotaciju). Ne zaboravi da dodash i silu trenja, kako bi ta lopta stala)
- Collision Detection (detekcija sudara) Imash gomilu papira na netu na zadatu temu. Treba ti detekcija kolizije sfera-sfera (za lopte), i sfera-ravan(za martinele). Rupe mozhesh aproksimirati zamishljenim loptama, pa kad se prava lopta 'sudari' sa zamishljenom izbacish je odmah iz igre. Ovo je sluchaj u 3D, u 2D je josh jednostavniji (kruzhnice i linije)
- Collision Resolving - tj. razreshenje kolizije, iliti distribucija impulsa. Ovo mozhe biti malo komplikovanije ako hocesh da postignesh iole vernu simulaciju (inicijalno 'razbijanje' grupe kugli, gde se impuls prenosi od jedne na drugu... nimalo naivno) O ovome takodje imash stvari dosta na netu. Prouchi malo pre nego krenesh u pisanje ikakvog koda
 
Lord British:
Ne znam, ni meni nije jasno. Verovatno ni njima.

meni je jasno.

zato sto je 2d grafika najprostija u javi, bar koliko ja znam.(program moze da se napravi u 100-njak redova, mozda kji red vise)
naravno da imas alternative, npr dev-c++ sa borland-graphics-inerface-om ( t.j. njegovom simulacijom),...............
ako ti se ne uci java evo uputstva:
1) skini:
http://www.bloodshed.net/dev/devcpp.html
skines prvi ( sa mingw kompajlerom ( njega sam koristio i znam da ce ta kombinacija da radi).
2) posalji mi private poruku sa tvojim mail-om da ti posaljem ostatak sa uputstvom ( nije veliko).

pozdrav
 
Za igre postoje dve platforme : opushtenija varijanta - Flash, bolja varijanta - C/C++ (ili eventualno Delphi)

2D grafika nije "najprostija" u Javi, pogotovo 2D grafika koja bi lichila na igru. Za C++ postoji gomila veoma dobrih biblioteka za 2D/3D grafiku, samo treba odabrati onu koja je primerena zadatku. Chak i bez OpenGL-a ili DX-a u C++ Builderu je ekstremno lako napakovati 2D grafiku.

Inache, BGI je toliko mator (i toliko DOS-ovski) da ga nema smisla ni pominjati.
 
mozda je bgi mator , ali je sasvim dobar za ovu konkretnu primenu.
srkoz je prost za koriscenje, i lako se uci.
naravno da je najbolje da to napravis u openGL-u ili directx-u , ali tu bi morao mnogo vise da ucis.....
 
па ста онда да користим за графику?
пази, графику не да немам појма, неко никад нисам с тим имао додира
 
Evo rekose ti mnogo toga, ja bih samo dodao da upravo uzmes opengl ili directx (opengl je laksi) za graficki dio igre. E to kada pocnes raditi trebat ce ti zivaca i zivaca, da sve to funkcionise onako kako si ti zazelio, pa jos mnogo toga itd itd, al' u ostalom vidjet ces i sam.
Mada dobar je tip igre, cisto zbog fizike, nego jel planiras 2d ili 3d ?
 
Mislim da bi trebao da koristis C++ i DirectX.
DirectX je bolja stvar od OpenGL.Doduse, OpenGL je prostiji. Postoji uvek ono "ALI".Lepse ce izgledati u DirectX nego u OpenGL.
A sto se tice jezika, mislim da bi C++ bio pogodniji za programiranje.
Java moze da se vrati u izvorni kod a C++ ne moze.
 
yebote idete mi na zivce.
jel vi uoposte citate sta pisem?

NECU 3D. NECU fensi grafiku

sad treba da citiram samog sebe iz prvog posta... grafika nista posebno, na nivou onih kineskih konzola sto se pre kupovale na buljaku za 10 maraka.

el sad jasno sta ocu sa grafikom?

rad je usmeren na fizicki model, ne na grafiku. grafika je tu samo da ne bih imao kao izlaz tabelu sa brojevima. tj da bi program mogli da koriste kreteni koji ce taj rad da ocenjuju (da, kreteni, jer su ortaka prosle godine pitali - u notepadu? a sto nisi u front page-u, lakse ti tako)


daklem - kakav bi mi izlaz bio pogodan da bih mogao da ga povezem sa grafikom? ovo sto sam vec ispisao bi trebalo da odlicno zavrsi stvar, jel? mislim, imam koordinate, samo povezem slicicu kruga sa virtuelnim kordinatama koje cu da pretvorim u koordinate prozora. to je to valjda, jel?
 
ok . hvala. ti si mi najvise i pomogao ovde :)

snasao sam se za fiziku, ko sto rekoh, sve je radjeno preko vektora, na jos laksi nacin nego sto sam imao u glavi (al ne zalim se)

sad ostaje jedna stvar koja mi jos nije jasna. lik je izgleda nesto promasio u tekstu

kako da nadjem tacku u kojoj kugla prestaje da se kliza i pocinje okretanje?

napomena - sto se tice udarca, smatracu da je svaki udarac usmeren tacno u sred lopte, znaci bez mogucnosti krzanja sa strane ili odozdo pa da moze da poleti. bilo bi mi previse da i to radim. mislim, da imam vremena radio bih, znam i sam koliko moze da se igra zakomplikuje sa tim, ali nemam ni vremena, ni zivaca a ni prostora (ogranicen na 10 a4 strana proreda 1.5, a tu treba da strpam ceo fizicki model i kompletno prebacivanje u kod...damnit)

to treba da bude valjda kad intenzitet vektora brzine u tacki dodira kugle i stola postane manji od trenja u toj tacki?
ali kako ja to sad da izracunam?
 
ok, ali onda kod sudara nije ista situacija....hm....ma u stvari jeste.
da znas.

al opet nije svejedno da li se lopta kliza ili kotrlja. nije isti uticaj trenja. odnos je cak 1: 0.1....ili bar tako chika autor texta kaze

ok. problem - kretanje lopte

po udarcu lopta se kliza odredjeno vreme a zatim pocinje da se kotrlja.
kako naci taj moment?
da li ga je uopste potrebno naci?

ostalo cu lako
 
ma pametno, neka se krece ona odma kotrljajuce...yebesh klizanje

samo, koliko je trenje???

i sila udarca?

auh majku mu...


e, kad ste vec tu, nije mi jasno koriscenje #define
uvek mi izbaci neku gresku kad radim s tim
 
samo, koliko je trenje???

i sila udarca?

Ne postoji egzaktna velichina za trenje - postoji samo 'damping' faktor u sili trenja. Vrednost cesh morati da nadjesh sam, eksperimentishi. U principu, vektor sile trenja je uvek suprotan vektoru trenutne brzine. Intenzitet tog vektora ti je samo trenje, shto veci intenzitet usporenije kretanje i veci negativni uticaj na ubrzanje.

Sila udarca - valjda impuls? Pogledaj srednjoshkolske knjizhice o 'teoriji odrzhanja impulsa' (brzina i masa), pa pogledaj par primera kako je to implementirano kod video-igara. Uglavnom, zapamti da je fizika u igrama uglavnom hakovana sa svih strana i ne drzhi se 'knjishkih formula' preterano.
 
ok :)

impuls...hm....

taj lik sto sam nasao njegov tekst je udarac posmatrao kao oprugu, znaci stape se izvede iz polozaja mirovanja (kada dodiruje belu kuglu) i kada se pusti deluje na loptu nekom silom F=kx, gde je x udaljenost stapa od lopte, (odnosno za oprugu od ravnoteznog polozaja) a k koeficijent elasticnosti. mada isto mi dodje tako ili preko impulsa, p = mv. masa je 160 grama (156-170 standardno, sredina 160...) ali kolika je onda brzina udarca? u svakom slucaju svodi mi se na isto
i dalje ne znam trenje i jacinu udarca...

ma cu nadjem nekako nacin i da to izracunam, uostalom ostavicu promenljivu kojoj cu sam da dajem vrednost pa koja bude najrealnija na kraju nju cu da postavim. zato i pitam kako se tacno koristi #define

to mi dade jednu finu ideju - da ostavim korisniku mogucnost da sam odredi gravitaciju...ili da se ipak ne drkam s tim mnogo?
 
Gravitaciju? Shta ce ti to, radish u 2D, nema gravitacije, nema skaknja lopti, sve je u [xy] sistemu.

Shto se tiche impulsa i 'opruga' trebao bi da pogledash kako radi "Verlet Integration", to je metod integracije kojim se sluzhi vecina igara danas (u skoro svakoj igri na kojoj sam radio je Verlet korishcen za dinamiku kretanja).

I josh jednom - trenje je sila oblika F=kv, gde je v vektor brzine (u tvom sluchaju, jer je 2D problem). Koliki je keoficijent "k" morash utvrditi eksperimentisanjem, tj. naci vrednost koja daje "prirodne" rezultate. Obrati pazhnju samo na to kako cesh to integrisati u Verlet.

Ako mislish da izvedesh tu fiziku kako valja, i pri tom da je STABILNA (kad se jednom uhvatish toga, videcesh zashto je ovo najveci problem!) moracesh da aproksimirash dosta stvari. Ponekada su "magic numbers" jedini nachin da postignesh to shto ti treba
 
sad vec pocinjem da se plasim :)

treba mi gravitacija jer utice na trenje...ebiga. jeste igra 2d, ali sistem je sam po sebi aproksimacija iz 3d...kako beshe... sila trenja = koeficijent trenja*masa*gravitacija

to ti pricam...gravitacija bitno utice na promenu brzine

saj cu vidim verlet integration
 
Nemoj gravitaciju da menjas nego koeficijent trenja...
g i m su ti konstantni...
mozes da napravis vise tipova podloge i da svaki ima svoj koef. trenja...
mislim da ti je najlakse za klizanje i kotrljanje da probas pa da vidis sta ti je najrealnije, isto to i za trenje..
i probaj da postujes malo jasnije poruke ;)
 

Back
Top