játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5440
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2519

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2185
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1625
syam:    1491
Frissebbek | Korábbi postok
[1] [2] > 3 < [4] [5] [6] [7] [8] [9]
Thrall - Törzstag | 609 hsz       Online status #187897   2012.10.11 00:13 GMT+1 óra  
Sziasztok, tud valaki valami jó java 3d tutorialt, Canvasra akarok 3d-t rajzolni, de nem kell nagyon jónak lennie, már a textúrázás sem - annyira - fontos.
A problémám az, hogy pl a Java OGL nem valami platformfüggetlen.
Választ előre is köszönöm!
Jatekfejlesztes.hu közös projekt: próbálunk összerakni egy olyan csapatot, akik együtt el tudnak készíteni egy komolyabb játékot megfelelő minőségben. Érdekel?
Link:
JF.hu közös projekt
http://frogbonegame.uw.hu/
   
DMG - Szerkesztő | 3172 hsz       Online status #185083   2012.07.25 08:14 GMT+1 óra  
Tegnap fürdés közben rájöttem, hogy lesz a dolog optimális, és nem kell szórakozzak rajzolási időben.

Facepalm kategória.

A rávezetést köszönöm!.
-----------------------------------------
Dont Listen to the Naysayers
   
DMG - Szerkesztő | 3172 hsz       Online status #185069   2012.07.24 20:08 GMT+1 óra  
Hát igazából csak azoknál kell amik reakcióba tudnak lépni egymással, azzal együtt, hogy van szülő objektumuk, amiknek nincs, azoknak nem kell újraszámoltatni, mert a koordinátáik alaból globálisak.

Most nem akarok ezen fennakadni, szóval megcsinálom valahogy, aztán max később optimalizálom.

Köszi a segítséget!
-----------------------------------------
Dont Listen to the Naysayers
   
Matzi - Szerkesztő | 2519 hsz       Online status #185062   2012.07.24 16:46 GMT+1 óra  
Milyen gyakran kell lekérdezni a konkrét kordinátát? Mert ha kattintásonként, ami ritka, akkor bőven elég akkor. Én a rajzoló függvénybe biztos nem tennék ilyet, akkor már inkább mozgatáskor számolnám újra.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
DMG - Szerkesztő | 3172 hsz       Online status #185041   2012.07.24 13:02 GMT+1 óra  
A hierachia úgy működik, hogy van egy globális koordináta érték, amit az adott hierarchia szinten eltol x;y értékkel az adott objektum, hogy megtalálja a helyét, ez leegyszerüsíti a hierarchia kezelést, ha a szülő elmozdul, akkor mozdul vele az össze alatta lévő objektum. Viszont ez azzal jár, hogy egy adott objektum tényleges pozíciója csak akkor derül ki, ha a hierarchiában eljut odáig a megjelenítés (bár ezt nyílván a vezérlő metódosba is betehetem, részlet kérdés, hogy ott számolom ki a globális pozícióját, és utána azon jelenítem meg, vagy eltologatom a pozíciót, és ott jelenítem meg, majd beállítom az adott értéket az ő globális koordinátája. (nem tudom mennyire érthető, ha nem, akkor összeszedem magam. )

Akárhogy agyalok rajta, ennél egyszerűbben nem tudom megoldani, valahogy mindig beleszaladok valamibe ami miatt visszakanyarodok ide.
-----------------------------------------
Dont Listen to the Naysayers
   
Matzi - Szerkesztő | 2519 hsz       Online status #185039   2012.07.24 12:52 GMT+1 óra  
Miért nem akkor nyered ki az értéket, amikor szükséged van rá?
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
DMG - Szerkesztő | 3172 hsz       Online status #184999   2012.07.23 21:12 GMT+1 óra  
Egy kérdés, de azt hiszem tudom rá a választ.

Objektum hierachián dolgozom, egy adott objektumnak leht szülő objektuma, amitől függ a pozíciója.

Viszont bizonyos esetekben szükség van a globális pozízióra is, ezért egy külön változóba eltárolom azt is, viszont a globális pozíció a jelen felépítés mellett a rajzolási szakasban kinyerhető, ekkor tudom eltárolni a globális pozíciót.

A kérdés a következő:

Mi az olcsóbb, ha minden draw eseménynél értéket adok a globális pozíciónak, vagy ha vizsgálok egy logikai értéket, hogy elmozdult-e és csak akkor adok új értéket a változónak.

Egy IF szerintem drágább mint egy egyszerű érték adás, de gondoltam rákérdeze.
-----------------------------------------
Dont Listen to the Naysayers
   
zeller - Törzstag | 464 hsz       Online status #184784   2012.07.19 12:44 GMT+1 óra  
eclipse hasznaloknak egy kis jutalom:
Ezek a shortcutokhoz:
http://eclipse.dzone.com/news/effective-eclipse-shortcut-key
http://www.vogella.com/articles/EclipseShortcuts/article.html

Ez pedig a sajat makrokhoz:
http://digitheadslabnotebook.blogspot.co.uk/2008/09/eclipse-templates-and-import-statements.html

kulon java bonusz amit a makrokhoz kiemelnek:
main illetve sysout, aki meg nem ismerte volna oket. Ezeket defaultbol kapjuk.
Megeri sajat makrokat irni, sokkal gyorsabba teszik a fejlesztest.

   
kernel_panic - Tag | 117 hsz       Online status #183599   2012.06.20 10:53 GMT+1 óra  
Még jómúltkorjában felvetődött a Java-s assembly betétek ötlete, ami arról jutott most eszembe, hogy belefutottam ebbe. Nem mélyedtem el benne különösebben, de érdekesnek tűnik (mondjuk azt nem tudom, hogy a gyakorlatban mennyire hatékony pl. az adatok "mozgatása" ).

   
zeller - Törzstag | 464 hsz       Online status #183327   2012.06.16 06:47 GMT+1 óra  
En netbeansrol valtottam eclipse-re meg 3-4 eve. Sztem egyaltalan nem tud tobbet. A debuggere kifejezetten szar volt akkor, a hotkey meg a refactor tamogatasa is hianyos.
Persze lehet, hogy azota jobb lett, de sztem az IDE dolog is elsosorban hitvita. Sose volt bajom az eclipse-szel, kiveve macen a 3.7-es CDT mert ott van valami deadlock ami miatt neha lefagy code complete kozben...

   
DMG - Szerkesztő | 3172 hsz       Online status #183320   2012.06.15 22:30 GMT+1 óra  
Eddig nem is, na de meg is van a gond, az external jar-filok kezelése szórakozik, megoldottam.

Azt nem tudom, hogy a "fagyást" az új upgrade megoldj-e majd kiderül.

Egyébként tényleg érdekelnének konkrétumok, hogy mi a baj vele, és mivel tud többet a NetBeans
-----------------------------------------
Dont Listen to the Naysayers
   
sirpalee - Tag | 1282 hsz       Online status #183318   2012.06.15 22:06 GMT+1 óra  
Pedig sose volt bajod az eclipsevel...
raytraceisten és übermedic
   
DMG - Szerkesztő | 3172 hsz       Online status #183315   2012.06.15 21:25 GMT+1 óra  
Baszki, frissítettem az eclipset, és elhal indítás után a programom.
-----------------------------------------
Dont Listen to the Naysayers
   
LugaidVandroiy - Törzstag | 504 hsz       Online status #183307   2012.06.15 20:49 GMT+1 óra  
Nem tud valaki valami jó profilert Eclipsehez vagy NetBeanshez?

   
zeller - Törzstag | 464 hsz       Online status #181589   2012.05.24 20:10 GMT+1 óra  
Hasznalhatsz read lockot a pollban es RW lockot a modositaskor. Kulonben mindenkeppen teljes varakoztatas lesz. De ha az onTouch stale-be teszi kozben az adatokat, akkor ez buko lesz es teljes szinkronizalas kell.

A staticra csak annyit tudok mondani, hogy premature optimization is the root of all evil

   
bit.0x8000 - Törzstag | 574 hsz       Online status #181575   2012.05.24 19:25 GMT+1 óra  
Idézet
zeller :
Ahhoz miert kell statikus legyen, hogy a leszarmazottak hivhassak? (Ha objektumon hivod, akkor ne legyen statikus.)


Egyrészt csak statikus tagokat használ, másrészt nincs rá szükség, hogy virtuális legyen, szóval szerintem inkább az a kérdés, hogy miért ne lenne statikus? (Amennyire én tudom, a statikus metódusok valamivel erőforrás-hatékonyabbak, még ha ez itt inkább csak elméleti tényező is.)

Idézet
zeller :
Ezt nem egeszen ertem. Ha ugyanarra a szemaforra varakoznak es 0-ban van akkor varakoztatja egymast a poll es az onTouch. De hat pont ez a lenyege nem? Van egy eroforrasod, ami stale allapotban lehet, ezert szinkronizalod a hozzaferest, nem?


Olyasmire gondoltam, hogy ha pl. az egyik "lefoglalja" (folyamatosan használja) a hozzáférést, akkor a különböző megoldások máshogy kezelhetik ezt a helyzetet...
   
zeller - Törzstag | 464 hsz       Online status #181572   2012.05.24 18:36 GMT+1 óra  
Ezt nem egeszen ertem. Ha ugyanarra a szemaforra varakoznak es 0-ban van akkor varakoztatja egymast a poll es az onTouch. De hat pont ez a lenyege nem? Van egy eroforrasod, ami stale allapotban lehet, ezert szinkronizalod a hozzaferest, nem?

Ahhoz miert kell statikus legyen, hogy a leszarmazottak hivhassak? (Ha objektumon hivod, akkor ne legyen statikus.)

Amugy az 5-os javadocbol:
Kód:
A counting semaphore. Conceptually, a semaphore maintains a set of permits.
Each acquire() blocks if necessary until a permit is available, and then takes it.
Kód:
Each release() adds a permit, potentially releasing a blocking acquirer. However, no actual permit objects are used; the Semaphore just keeps a count of the number available and acts accordingly.

Ezt a hozzászólást zeller módosította (2012.05.24 18:45 GMT+1 óra, ---)

   
bit.0x8000 - Törzstag | 574 hsz       Online status #181568   2012.05.24 18:07 GMT+1 óra  
Idézet
zeller :
Mi ertelme van itt a szemafornak, ha binaris? szinkronizalj a kritikus szakaszon thisre azt jonapot. Ugyanaz. Nem tudom ez esetleg jobb-e performanszban...


Igazából a konkurens hozzáférés (vagy hogyan hívják) érdekelt volna, hogy nem-e "tartják fel" egymást?

Idézet
zeller :
Amugy a poll miert statikus?


Azt a leszármazottak hívják, mielőtt feldolgoznák a bemenetet.
   
zeller - Törzstag | 464 hsz       Online status #181556   2012.05.24 16:39 GMT+1 óra  
Mi ertelme van itt a szemafornak, ha binaris? szinkronizalj a kritikus szakaszon thisre azt jonapot. Ugyanaz. Nem tudom ez esetleg jobb-e performanszban...
Amugy a poll miert statikus?

   
bit.0x8000 - Törzstag | 574 hsz       Online status #181552   2012.05.24 16:19 GMT+1 óra  
Egy Java szálkezeléssel kapcsolatos kérdés:
Az alábbi két metódus két külön szálból hívódik, az egyik módosít, a másik kiolvas adatokat...
Kód:
static private Semaphore semaphore = new Semaphore(1);

public boolean onTouch(View view, MotionEvent event)
{
  try {semaphore.acquire();} catch (Exception exception) { }
  // Módosítás
  semaphore.release();
  return true;           
}

static protected void poll()
{
  try {semaphore.acquire();} catch (Exception exception) { }
  // Kiolvasás
  semaphore.release();
}

...a kérdés, hogy itt vajon jobb választás lenne-e a synchronized, vagy valami más megoldás (a poll frame-enként legfeljebb egyszer hívódik, az onTouch elméletileg bármennyiszer hívódhat) ?
   
LugaidVandroiy - Törzstag | 504 hsz       Online status #180656   2012.05.11 11:20 GMT+1 óra  
Olyan, mintha eventre várna, csak pl az init függvény nem hívódik meg úgy, ahogy kéne. Az is csak resize után hívódik meg.

Edit: megvan, a jframe-t addig nem szabad megmutatni, ameddig a GLEventListener nincs a helyén.
Jogl - User's guide
Note also that the GLEventListener should be added to the GLAutoDrawable before the GLAutoDrawable is shown or rendered to for the first time. If this is not done, it is possible that the init() method will not be called on the GLEventListener. JOGL does not maintain internal state to keep track of whether init() has been called on a particular GLEventListener since the last time an OpenGL context was created for that GLAutoDrawable.

Ezt a hozzászólást LugaidVandroiy módosította (2012.05.11 11:26 GMT+1 óra, ---)

   
DMG - Szerkesztő | 3172 hsz       Online status #180655   2012.05.11 11:12 GMT+1 óra  
Valami ReDraw metódust kéne meghívni, amit a resize alapból meghív, valami rémlik régről, de nem ugrik be.
-----------------------------------------
Dont Listen to the Naysayers
   
LugaidVandroiy - Törzstag | 504 hsz       Online status #180654   2012.05.11 11:05 GMT+1 óra  
Lenne egy problémám. Adott a Java, és hozzá a JOGL. Viszont, miután megcsinálom a JFramem, semmi sem látszódik. Egészen addig, amíg nem méretezem át az ablakot vagy teszem le tálcára és vissza. Utána minden kirajzolódik, ahogy kell.



És a kód (ami csúnya, tudom, nem volt még időm rendezni)
Kód:
package com.cogwheel.framework.graphics;

import java.awt.BorderLayout;

import javax.media.opengl.GL;
import javax.media.opengl.GL2;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.awt.*;
import javax.swing.JFrame;

import com.cogwheel.framework.init.CWGPreferences;
import com.cogwheel.framework.util.CWGDebug;
import com.jogamp.opengl.util.Animator;

public class CWGOpenGLScreen extends JFrame implements GLEventListener {
private static final String TAG = "CWGOpenGLScreen";

private GLCanvas mCanvas;
private long fpsLast = System.currentTimeMillis();

public CWGOpenGLScreen(){
this.setTitle(CWGPreferences.WINDOW_NAME);
this.setSize(CWGPreferences.WINDOW_SIZE);
this.setLayout(new BorderLayout());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
///this.setResizable(false);
this.setVisible(true);

CWGDebug.info(TAG, "Window created!");

CWGSetupGL();
}
private void CWGSetupGL(){
GLCapabilities mCaps = new GLCapabilities(null);
mCaps.setHardwareAccelerated(true);
mCaps.setDoubleBuffered(true);

mCanvas = new GLCanvas(mCaps);
mCanvas.addGLEventListener(this);

this.add(mCanvas, BorderLayout.CENTER);

Animator animator = new Animator(mCanvas);
animator.start();
}

public void CWGDrawScene(GLAutoDrawable drawable)
{
CWGCalculateFPS();

GL2 gl = drawable.getGL().getGL2();
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
gl.glLoadIdentity();


gl.glBegin(GL.GL_TRIANGLES);
gl.glColor3f(1.0f, 0.0f, 0.0f);
gl.glVertex3f(1.0f / 5 , 0.0f, 0.0f);

gl.glColor3f(0.0f, 1.0f, 0.0f);
gl.glVertex3f(1.0f / 5, 1.0f / 5, 0.0f);

gl.glColor3f(0.0f, 0.0f, 1.0f);
gl.glVertex3f(0.0f, 1.0f / 5, 1.0f / 5);
gl.glEnd();
gl.glFlush();
}

public void CWGCalculateFPS(){
this.setTitle(CWGPreferences.WINDOW_NAME + " [" + 1000 / (System.currentTimeMillis() - fpsLast) + "]");
fpsLast = System.currentTimeMillis();
}

public void init(GLAutoDrawable drawable){
/*GL2 gl = drawable.getGL().getGL2();

    gl.glClearColor(0, 0, 0, 0);
    gl.glMatrixMode(GL2.GL_PROJECTION);
    gl.glLoadIdentity();
    gl.glOrtho(0, 1, 0, 1, -1, 1);
    */
    CWGDebug.info(TAG, "Init called!");
}
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height){}
public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged){}
public void display(GLAutoDrawable drawable){ CWGDrawScene(drawable); }
public void dispose(GLAutoDrawable drawable){}
}

   
zeller - Törzstag | 464 hsz       Online status #180006   2012.05.05 14:34 GMT+1 óra  
Ebben az esetben en a sunos online tutorialt ajanlom. Abba minden benne van, a buildelestol kezdve.

   
krees - Törzstag | 732 hsz       Online status #180002   2012.05.05 12:19 GMT+1 óra  
Adj elérhetőséget, vagy feltöltsem valahova?
   
Marclee - Tag | 285 hsz       Online status #180001   2012.05.05 11:21 GMT+1 óra  
Kéne valami ami úgy az alapoktól elmagyarázza ,hogy át tudjam futni megint mert teljesen ki ment a fejemből az egész, csak az elmélet van meg xd Úgyhogy krees megköszönném
Humankind cannot gain anything without first giving something in return. To obtain, something of equal value must be lost.
Alphonse Elric

http://geeksworld.hu/
   
krees - Törzstag | 732 hsz       Online status #179999   2012.05.05 09:30 GMT+1 óra  
Ha nagyon kell, az Agyhullám - Java könyvet el tudom küldeni.
   
LugaidVandroiy - Törzstag | 504 hsz       Online status #179996   2012.05.05 07:50 GMT+1 óra  
Szerintem találj ki valami egyszerűbb projectet, és ha valami nem megy, akkor nézd meg hozzá docot.

   
zeller - Törzstag | 464 hsz       Online status #179995   2012.05.05 06:51 GMT+1 óra  
Ahhoz minek konyv? Talalj ki egy feladatot es nezd az apidocot, meg a "rokagomba example java" talalatokat, ahol rokagomba tetszoleges megoldando problema. Egy tuti, a roseindiat keruld messzirol, es a java2st is

   
Marclee - Tag | 285 hsz       Online status #179984   2012.05.04 20:31 GMT+1 óra  
Melyik könyvet vagy tutorial sorozatot ajánljátok Javahoz leginkább? Fél év kiesés után ismét elakarok kezdeni kódolni.
Humankind cannot gain anything without first giving something in return. To obtain, something of equal value must be lost.
Alphonse Elric

http://geeksworld.hu/
   
DMG - Szerkesztő | 3172 hsz       Online status #178156   2012.04.11 09:18 GMT+1 óra  
Problémám konkrétan nincs, csak egy kérdés merült fel bennem tegnap.

Szóval a lényeg.

egy adott sprite-nak van egy animációja, ami gyakorlatilag képkockák (ha úgy tetszik textúra régiók) összessége egy adott textúra atlaszon.

Ezt alakítottam mot át úgy, hogy ezt az animációt globálisan tárolom, hogy egy iylen animációhoz hozzáférjen több objektum is redundancia nélkül.

A kérdés meg az volt, hog ymelyik az optimálisabb, ha egy globális hashMap-ban tárolom és innen kell elérni, vagy ha lokálisan tárolom redundánsat, de az elérési út elvben rövidebb.

A Animations osztály viszonylag egyszerű. add()-al lehet hozzáadni egy animációt névvel ellátva, amivel hivatkozni tudok rá, get()-el meg kinyerem belőle adott névvel az animációt.
-----------------------------------------
Dont Listen to the Naysayers
   
M4 - Tag | 187 hsz       Online status #178154   2012.04.11 09:03 GMT+1 óra  
DMG: Nem egészen értem a problémát, úgyhogy lehet hülyeséget írok.
Egy parszolási feladatnál volt olyan problémám, hogy parszolás után elég lett volna, ha minden változó final az osztályban, de parszoláshoz az nem lett volna elég. Ezért készítettem egy ValamiConstructor osztályt, majd ha végeztem ezzel a fázissal, elkészítettem new Valami(ValamiConstructor) az immutable osztályt.

Szerk.: A név lehet Enum elem is. És a hashmap pedig EnumMap. De nem tudom hogy kényelmes neked.

Ezt a hozzászólást M4 módosította (2012.04.11 09:09 GMT+1 óra, ---)

   
DMG - Szerkesztő | 3172 hsz       Online status #178153   2012.04.11 09:00 GMT+1 óra  
Igen, rakhatom, csak kényelmesebb egy névvel hivatkozni rá, mint minden egyes elemnek az indexét megjegyezni, attól függően, hogy hogyan töltöm fel a tömböt.
-----------------------------------------
Dont Listen to the Naysayers
   
zeller - Törzstag | 464 hsz       Online status #178152   2012.04.11 08:55 GMT+1 óra  
Ebben az esetben rakhatod tombbe is. Az is egy map, ha ugy vesszuk. Persze ha nem egesszel indexelsz akkor buko.

   
DMG - Szerkesztő | 3172 hsz       Online status #178145   2012.04.11 07:49 GMT+1 óra  
Köszönöm a válaszokat!


Tegnap alvás közben/helyett átgondoltam.

Ahol a HashMap-et kényelmesen tudom hasznosítani az a részecske rendszer, ami jelenleg úgy működik, hogy egy részecske rendszerhez trartozik egy animáció, és az dobálja rá a részecskékre, így nincs redundancia, viszont gondolkodom olyan részecske rendszeren, aminél a részecskék grafikája független, így akár random grafikát is kaphatnak különböző részecskék egy rendszeren belül. Viszont ilyenkor elég nagy lenne a redundancia, ráadásul futási időben a részecskék konstruktora minden egyes születéskor feltölti az adott részecske animációját az adott textúra adatokkal. Szóval itt mindenképpen van haszna a HashMap-nek. Nameg valóban kényelmesebb meg átláthatóbb így a kód. Textúránál nem is volt kérdés, csak itt akadtam el kicsit mert csak float-okat tárolok párat.

zeller: Köszi a tippet, mindig tervezem hogy rászánom magam a profiler-re, lassan el is jutok odáig.
-----------------------------------------
Dont Listen to the Naysayers
   
LugaidVandroiy - Törzstag | 504 hsz       Online status #178144   2012.04.11 05:25 GMT+1 óra  
Szerintem nyugodtan maradj a HashMapnál. Egyfelől a kódod is szebb lesz, és könnyebben átlátod, biztosan nem töltöd be ugyanazt kétszer más néven más osztályba.

Én már csak HashMapot használok az assetek eltárolásához. De majd valaki okos megmondja, hogy miért vagyok hülye.

   
zeller - Törzstag | 464 hsz       Online status #178143   2012.04.11 05:19 GMT+1 óra  
Hashmap O(1) szoval elvileg a sebessegkulonbseg elhanyagolhato, a memoriahasznalat is. Hasznalj profilert, anelkul bun optimalizalni.

   
DMG - Szerkesztő | 3172 hsz       Online status #178134   2012.04.10 22:07 GMT+1 óra  
Lenne egy kérdésem.

Nagy erőkkel optimalizálok, meg ésszerüsítek.

Van egy spritebatcher-em, ami a lehető legkevesebb hívással kirajzolja az egy textúra atlaszra eső spriteokat. Az animált sprite-ok mindegyike megkap egy animációt, ami textúra koordináta párok összessége, egy 16 képkockás anim16 ilyen textúra párt (vagy inkább négyest kap) arra gondoltam, hogy ezt globalizálnám, hogy ne kelljen ennyiszer eltárolni. Viszont futási sebesség kapcsán elgondolkodtam, hogy több időbe telik-e egy HashMap-ből kinyerni egy index értéket, ha arra kényelmesen egy névvel hivatkozok, mint ha az adott osztály lokális változójához nyúlok? Nyílván igen, de mennyire elenyésző ez, van-e értelme így memóriát spórolni?

Mobil alkalmazásról beszélünk persze.

Mennyire érthető, amit összezagyválok késő este?
-----------------------------------------
Dont Listen to the Naysayers
   
LugaidVandroiy - Törzstag | 504 hsz       Online status #177698   2012.04.05 15:02 GMT+1 óra  
Köszönöm, figyelni fogok rá Meg ügyelni.

   
zeller - Törzstag | 464 hsz       Online status #177650   2012.04.05 09:19 GMT+1 óra  
Idézet
LugaidVandroiy :
Most bőven elég byte tömböket küldözgetni. A célját ellátja, relatíve gyors is, most már marad


csak nehogy megszivjad a reprezentacios elteresekkel. endianness, signed/unsigned. Meg ilyenek

   
LugaidVandroiy - Törzstag | 504 hsz       Online status #177648   2012.04.05 09:13 GMT+1 óra  
Most bőven elég byte tömböket küldözgetni. A célját ellátja, relatíve gyors is, most már marad

   
zeller - Törzstag | 464 hsz       Online status #177643   2012.04.05 08:59 GMT+1 óra  
Ertem. Csak az interop igy nehezkesebb. rpc nem fog menni, csak corba, ws nameg a sima text.

   
LugaidVandroiy - Törzstag | 504 hsz       Online status #177642   2012.04.05 08:51 GMT+1 óra  
Mert ott könnyebb volt összekattintgatni a GUI-t és WINAPI hívásokat végezni. Meg mert ehhez értek még jobban Java-n kívül.

   
zeller - Törzstag | 464 hsz       Online status #177639   2012.04.05 08:09 GMT+1 óra  
Miert van a szerver c#-ban?

   
LugaidVandroiy - Törzstag | 504 hsz       Online status #177608   2012.04.04 16:50 GMT+1 óra  
A segítségetekre lenne szükségem - megint

Szóval az van, hogy van Java-ban írva egy kliens, C#-ban meg egy szerver. Eddig tökéletesen ment az, hogy A kliens adatokat küldött a szervernek. Tök jó, meg minden, viszont oda-vissza kommunikációt szerettem volna csinálni. Elvileg megírtam, viszont a kliens nem kap valamiért adatot a szervertől. Mi lehet a hiba?

Szerver (C#):
Kód:
public void SendBack(string message, NetworkStream stream)
        {
            if (stream.CanWrite)
            {
                byte[] candy = Encoding.ASCII.GetBytes(message + ";");
               
                stream.Write(candy, 0, candy.Length);
                stream.Flush();
               
                Console.WriteLine("[SENT] " + message);
            }
            else { Console.WriteLine("ERROR! CANNOT WRITE ON NETWORKSTREAM!"); }
        }


Kliens (java):
A kapcsolat létrehozásakor:
Kód:
bReader = new BufferedReader(new InputStreamReader(gSocket.getInputStream()));

new Thread (new Runnable(){
public void run() {
Log.d(TAG, "Started listerner...");
ListenServer();
}
}).start();


És a thread:
Kód:
private void ListenServer(){
try{
String inputLine = "";
while (true){
                                inputLine = bReader.readLine();
                                if (inputLine != null)
      Log.d(TAG, "Got: " + inputLine);
}
} catch (IOException e){ Log.d(TAG, "Could not listen to sever!"); }
}



Edit: megvan a mocsok.. Gondolhattam volna rá, de nem olvastam el a BufferedReader.readLine() dokumentációját... elvár egy "\n"-t a string végén. Epic fail?

Helyesen a küldés:
Kód:
byte[] candy = Encoding.ASCII.GetBytes(message + ";\n");

Ezt a hozzászólást LugaidVandroiy módosította (2012.04.04 20:28 GMT+1 óra, ---)

   
DMG - Szerkesztő | 3172 hsz       Online status #177482   2012.04.02 19:41 GMT+1 óra  
Azért kösz.
-----------------------------------------
Dont Listen to the Naysayers
   
LugaidVandroiy - Törzstag | 504 hsz       Online status #177478   2012.04.02 19:11 GMT+1 óra  
Lehet oltári nagy baromság, de próbálj meg castolni. Sok problémám eredt már ebből, egy próbát megér.

Akkor tárgytalan.

   
DMG - Szerkesztő | 3172 hsz       Online status #177476   2012.04.02 18:56 GMT+1 óra  
Kikészülök, valaki vezessen már ki az erdőből legyen olyan kedves.

Szóval van egy Vector2 osztályom, amiben van x, y float változó.

Namos ehhez hozzá akarok adni eg ymásik Vector2-t amit mellesleg meg is szorzok egy számmal.

Kód:
position.x += velocity.x * dt;


A jelenség a következő.

Legyen mondjuk position.x = 7.5, velocity.x = 1.0 és a dt = 0.056;

Ha a fenti kódot futtatom, akkor kapok egy 86766.37 és ehhez hasonló borzalmat.

ha simán kiszámoltatom vele a

Kód:
position.x += 1.0f * 0.056f;


képletet akkor jó.



Kiiratom a változók értékeit, szóval biztos, hogy nem valami ordenáré nagy számot adok hozzá.

Felteszem valami memória címzés lehet nyomozok, de hátha van ötlet, hogy hol keressem.


Nem szóltam. dt az elején felugrik, csak a logbol meg kiszalad ezért nem láttam eddig.

Ezt a hozzászólást DMG módosította (2012.04.02 19:09 GMT+1 óra, ---)
-----------------------------------------
Dont Listen to the Naysayers
   
LugaidVandroiy - Törzstag | 504 hsz       Online status #177330   2012.04.01 08:03 GMT+1 óra  
Ezt majd megnézem, köszönöm szépen! Bár egyenlőre szerintem maradok a sima Java Application-nál, aztán majd átírom appletté.

   
Matzi - Szerkesztő | 2519 hsz       Online status #177314   2012.03.31 22:48 GMT+1 óra  
Nekem van erre egy viszonylag jól működő megoldásom, megpróbálom bemásolni a releváns részét:

Kód:
public static Applet App;
static HashMap<String, MyImage> Images = new HashMap<String, MyImage>();
int ID = 0, IDCounter = 0;

...

void Load(string name){
  MediaTracker tracker = new MediaTracker(App);
  URL url = MainAppletClass.class.getResource("/Pictures/"+name);
  Image im = App.getToolkit().getImage(url);
  ID = IDCounter++;
  tracker.addImage(im, ID);
  Images.put(name, this);

  tracker.waitForAll();
}


Az App változó értelem szerűen az applet objektumod, a MainAppletClass meg ennek a típusának a neve. Ezt én is a netről vadásztam, és nekem működött, persze a teljes kód kicsit nagyobb, meg összeszedetlenebb, de elvben ennyi a lényeg belőle.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Frissebbek | Korábbi postok
[1] [2] > 3 < [4] [5] [6] [7] [8] [9]