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

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2198
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1654
syam:    1491
> 1 <
Lazarus - Törzstag | 313 hsz       Online status #57979   2007.06.02 07:37 GMT+1 óra  
Végül csak sikerült összehoznom http://exuberant.extra.hu/tetrisz/

Örök hála Matzinak és Beastnek a sok segítségért!

Mostmár jöhet az MMO készítés
█▓▒░ All system gone, prepare for downcount! ➡ ➎➍➌❶ Offblast! ➔
   
Matzi - Szerkesztő | 2529 hsz       Online status #57937   2007.06.01 11:15 GMT+1 óra  
Ha arra akarsz célozni, amit én Draw() fv-nek írtam, az a te kirajzoló fv-ed. Szóval azzal azt akartam jelölni, hogy ott rajzolgathatsz az átadott Graphics-ra.

A Graphics és a Graphics2D hasonló, az utóbbi nem tudom pontosan miben más, de az előbbi az a felületed rajzoló interface (azért kérjük ez az Image-től getGraphics()-al), és van egy rakat mókás függvénye.

Az image egy memória terület, ahová rajzolhatsz. Egy ilyen az ablakod felülete is, ezért lehet a paint() fv felül definiálásával rajzolni az ablakba. És ezért kell úgy megkerülni a dolgot, ahogy írtam, egy másik, nem látható felületre való rajzolással, és annak az adatainak a kiküldésével.

Ha van még kérdésed, akkor írj MSN-en, és segítek ha tudok. Minket az egyetemen az itt található fóliákról tanítottak. Nem a legjobbak, de meg lehet érteni.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Lazarus - Törzstag | 313 hsz       Online status #57821   2007.05.31 14:51 GMT+1 óra  
Nem akarom feladni, de sehogy sem akar működni és a könyökömön jön ki az egész

Draw() függvényt nem ismer import java.* nélkül sem.

Mire szolgálnak az alábbi típusok és hogan működnek?
- Graphics
- Graphics2D
- BufferedImage
- Image

Utálom hogy a fejlődéshez szenvedni kell
█▓▒░ All system gone, prepare for downcount! ➡ ➎➍➌❶ Offblast! ➔
   
Matzi - Szerkesztő | 2529 hsz       Online status #57809   2007.05.31 12:57 GMT+1 óra  
Ha jól emlékszem, akkor betöltéskor meghívja az init()-et, amikor elindul, akkor a start()-ot, és a végén van olyan, hogy end() vagy mifene. Közben meg hívja a repaint()-t ami hívja a paint()-et.

A loopot meg lehet úgy is, hogy for(; és akkor belül kezeled, hogy megálláskor kilépjen belőle, vagy valami while(!exit) és akkor az exit értékét állítod át amikor kell.

A duplabuffert úgy kell csinálni, hogy lefoglalsz egy képet, ekéred a kezelőt hozzá, és amikor kirajzolsz, akkor erre a képre rajzolod ki a cuccot (annak a kezelőjét adod át), aztán amikor vége van, akkor az elkészült képet egy drawimage()-el átrakod a képernyőre.

Kód:
// deklaráció
Image offscreen;
Graphics gc;

// lefoglalás
offscreen=createImage(800,600);
gc=offscreen.getGraphics();

// paint fv.
public void paint(Graphics g){
Draw(gc);    // rajzolás a hátsó bufferre
if (offscreen!=null) g.drawImage(offscreen,0,0,null);   // a kép kirajzolása
}
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Lazarus - Törzstag | 313 hsz       Online status #57797   2007.05.31 10:05 GMT+1 óra  
Üdv!
Gondoltam ismerkedés céljából írok egy tetrist, fel is merült néhány probléma és kérdés

- Az osztályon belüli funkciókat milyen elgondolás alapján indítgatja el? Egymás után mindegyiket? Ha egy olyan funkciót akarok létrehozni ami nem indul el magától ahoz újabb osztályt kell létrehoznom? (Sosem sikerült megértenem az OOP szabályait)
- Hogyan tudok úgy örök loopot létrehozni hogy ne Alt+Ctrl+Del-el keljen bezárnom az appletet?


Az alábbi kódrészlet megfelelően működik, csak a kép folyamatosan villog, gondolom Doublebufferezni kéne, ezért csináltam egy második Graphics g_off és Graphics2D g_off2 változót(?) de ha így hívom meg a drawDemo(g2, g_off2); függvényt akkor csak egy szürke képernyő jelenik meg, egyelőre az sem világos melyik változó mire szolgál

Kód:
import java.awt.*;
import java.util.Random;
import java.awt.image.BufferedImage;
import javax.swing.*;

public class exuberant extends JApplet {

    private static Image img;
    public BufferedImage bi;
    public Graphics2D big;
    public int[][] mezo; // 20x8 (20x20 pixel / tile) (0 = üres, 1 = statikus, 2 = drop)

    public void init() {
        setBackground(Color.white); // Háttér
        this.setSize(160,400); // Képernyőméret
       
        // Kép betöltése
        img = getToolkit().getImage(exuberant.class.getResource("duke.gif"));
        try {
            MediaTracker tracker = new MediaTracker(this);
            tracker.addImage(img, 0);
            tracker.waitForID(0);
        } catch (Exception e) {}
    }

    public void createDrop() // Új drop létrehozása
    {
    Random generator = new Random(); // Random szám generátor
    switch (generator.nextInt( 4 ))
    {
    case 0:
    mezo[3][0] = 2;
    mezo[4][0] = 2;
    mezo[5][0] = 2;
    mezo[4][1] = 2;
    break;
    case 1:
    mezo[3][0] = 2;
    mezo[4][0] = 2;
    mezo[5][0] = 2;
    mezo[6][0] = 2;
    break;
    case 2:
    mezo[4][0] = 2;
    mezo[5][0] = 2;
    mezo[4][1] = 2;
    mezo[5][1] = 2;
    break;
    case 3:
    mezo[4][0] = 2;
    mezo[5][0] = 2;
    mezo[6][0] = 2;
    mezo[6][1] = 2;
    break;
    case 4:
    mezo[4][0] = 2;
    mezo[5][0] = 2;
    mezo[6][0] = 2;
    mezo[4][1] = 2;
    break;
    }
    }
   
    public void drawDemo(Graphics2D g2) {

    mezo = new int[8][20]; // Mező inicializálása
    createDrop(); // Létrehozzuk az első dropot

    long timestamp = 1;
    int fpscounter = 0;
   
    bi = (BufferedImage) createImage(20, 20);
        big = bi.createGraphics();
        big.drawImage(img, 0, 0, 20, 20, this); // Kép, ?, ?, szélesség, magasság
   
    for(int i = 1; i < 10; i--) // Örök loop
    {
    fpscounter++; // +1 fps
 
        g2.clearRect(0, 0, 160, 400); // Háttér törlése (!!!!)
        // Tábla megjelenítése
        for(int x = 0; x < 8; x++){
            for(int y = 0; y < 20; y++)
            {
            if(mezo[x][y] != 0) // Ha itt van kocka
            g2.drawImage(bi, x*20, y*20, this); // Megjelenítjük
            }
          }
        // Letelt egy fázis
        if (timestamp < System.currentTimeMillis()-1000) // Ha egy másodperc eltelik, ez lefut
        {
        g2.drawString(Integer.toString(fpscounter), 10, 10); // FPS kiírása
        timestamp = System.currentTimeMillis(); // Timestamp elmentése
       
        // Lejebbhozzuk a dropot
        for(int x = 0; x < 8; x++){
            for(int y = 19; y >= 0; y--)
            {
            if(mezo[x][y] == 2) // Ez egy drop element
            {
            mezo[x][y] = 0; // Töröljük a helyéről
            mezo[x][y+1] = 2; // És egy kockával lejebb visszük
            }
            }
     }
    }
       
    }
    }


    public void paint(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;
        g2.setBackground(getBackground());
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                            RenderingHints.VALUE_ANTIALIAS_ON);
        g2.setRenderingHint(RenderingHints.KEY_RENDERING,
                            RenderingHints.VALUE_RENDER_QUALITY);
        drawDemo(g2);
    }

}
█▓▒░ All system gone, prepare for downcount! ➡ ➎➍➌❶ Offblast! ➔
   
Gericop - Tag | 364 hsz       Online status #56279   2007.05.23 13:47 GMT+1 óra  
JDBC és MySQL között van átkötési módszer, viszont ahhoz már asszem kell külön csomag.
   
Gericop - Tag | 364 hsz       Online status #56278   2007.05.23 13:46 GMT+1 óra  
Most néztem meg, és elvileg alapból benne van a java.sql csomagjában, tehát a kliens oldalon nagy valószínűséggel nem kell föltelepíteni.
   
Matzi - Szerkesztő | 2529 hsz       Online status #56276   2007.05.23 13:42 GMT+1 óra  
A JDBC a kliens oldalon fut, ez igaz, de applet esetén ez a tárhelyszolgáltatót jelenti. Szóval szerintem ez a része ingyenes helyen nem fog menni, kivéve, ha direkt nyújtják mint szolgáltatást. Mondjuk ha valóban akkora terhelést számítasz, mint amit leírtál, akkor egyébként sem fognak örülni neki.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Lazarus - Törzstag | 313 hsz       Online status #56275   2007.05.23 13:14 GMT+1 óra  
Nah, kicsit utánaolvasva rájöttem hogy a JDBC-nek nem a szerveren hanem a kliensen kell futnia. Ehez külön JDBC Driver kell amihez CLASSPATH-et meg mindenféle dolgot kell konfigolni... utána ezt a drivert a compiler majd beépíti az appletbe? Vagy mindegyik játékosnak külön fel kéne telepítenie ezt a drivert?
█▓▒░ All system gone, prepare for downcount! ➡ ➎➍➌❶ Offblast! ➔
   
Gericop - Tag | 364 hsz       Online status #56255   2007.05.23 09:15 GMT+1 óra  
Szerintem ha ingyenes szerveren akarod majd futtatni bármelyik módot, le fogják tiltani az account-od, mert túlterheled a szervert. Egyébként én Netbeans-t használok. Elég jó kis cucc.
A MySQL-lel kapcsolatban:
- van JDBC - MySQL kapcsolattípus
- nem ajánlott MySQL jelszót tárolni az appletben, mert elég könnyű visszafejteni és kiíratni az ilyen jellegű dolgokat
   
Matzi - Szerkesztő | 2529 hsz       Online status #56253   2007.05.23 09:12 GMT+1 óra  
Hát, szerintem az lenne a legegszerűbb, ha írnál egy szerver programot, amihez lehet csatlakozni. Ha nem megy az adatbázis, akkor a szerver ment fájlba ha kell, amúgy meg megy a memóriában. Mondju kaz ingyenes szolgáltatóknál ez nemtudom mennyire megoldható.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Lazarus - Törzstag | 313 hsz       Online status #56239   2007.05.23 07:53 GMT+1 óra  
Thx, sikerült

Úgy látom a MySQL kapcsolat nem fog menni ingyenes webszervereken JDBC driver hiánya miatt.

Van ötletetek valamilyen alternatív adatbázisra?

Mivel saját szervert nem tudok hostolni router mögül (Szolgáltató letiltotta)

A következőket gondoltam ki: (szerver-kliens)
- A kliens a belépést követően beírja az IP címét egy txt fileba egy ingyenes webszerveren
- A szerver 5 másodpercenként ellenőrzi a filet, ha újat talált rákapcsolódik a megadott címre és mehet az adatcsere

Másik: (peer-to-peer?)
Minden kliensnek van egy TXT fileja a szerveren amiben a pozíciója és egyéb értékei vannak eltárolva, és ezeket a fileokat olvasgatja az összes többi kliens.

Harmadik: (szerver-kliens)
- Minden kliensnek van egy input könyvtárja a webszerveren, ha csinált valamilyen akciót (ütütt egyet az egyik játékosra) akkor az output mappában létrehoz egy új filet és beleírja hogy mit csinált.
- A szerverprogram folyamatosan frissítgeti a webserveren található output mappát és ha új filet talált akkor feldolgozza a tartalmát és törli. A közelben lévő játékosokat pedig értesíti azáltal hogy elküldi a módosult adatokat a kliensek input könyvtárjába txt file formájában.
- A kliensek ezalatt folyamatosan frissítgetik a saját input könyvtárjukat és ugyanúgy feldolgozzák az új adatokat, majd törlik a fölöslegessé vált fileokat.

Szerintetek?
█▓▒░ All system gone, prepare for downcount! ➡ ➎➍➌❶ Offblast! ➔
   
Matzi - Szerkesztő | 2529 hsz       Online status #56190   2007.05.23 04:36 GMT+1 óra  
A JRE és a JDK-t jól tudod. Én eclipse-ben fejlesztek, hasznos kis progi. A class a lefordított java állomány, nem gépikódú, hanem bytekódú. A fordítás meg úgy megy, hogy a JDK-ban van egy javac.exe, és azzal.
Pl:
//// fordítás:
path\javac.exe valami.java
//// futtatás:
path\java.exe valami

Nyilván az appletet nem így kell futtatni, hanem applet viewerrel, de például azért is jó ha valami keretrendszert használsz, mert abban jó eséllyel van integrálva. Az eclipseben van.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Lazarus - Törzstag | 313 hsz       Online status #56187   2007.05.23 04:28 GMT+1 óra  
Köszönöm a javaslatokat, úgy döntöttem kipróbálom a Java-t de már az elején sikerült összezavarodnom...

Szóval nekem java applet kell ha nem tévedek, ehez pedig JRE1.6.0_01 (Futtató program) és JDK1.6.0_01 (Fejlesztő eszközök).

- Milyen szerkesztőben érdemes java kódot írni?
- Mi a különbség a .class és a .java kiterjesztés között?
- Hogyan tudom lefordítani a kódot? (Nem találtam compilert a JDK-ban)
█▓▒░ All system gone, prepare for downcount! ➡ ➎➍➌❶ Offblast! ➔
   
Gericop - Tag | 364 hsz       Online status #56112   2007.05.22 12:16 GMT+1 óra  
Én a JAVA-t csak ajánlani tudom!
Elég jól ismerem a gépes és a telefonos verzióját is, és jól bírja a dolgokat.
A JAVA nem tud MP3-at lejátszani (csak bizonyos extra csomagokkal).
A kliens kiszolgálás szerintem nem csak a kliensoldalon múlik. Főleg, ha mondjuk egy extra-s szerverrel tervezed ezt, lehet, hogy nem fognak neki örülni az extránál, ha másodpercenként 300 kapcsolatot létesítesz az adatbázissal... Főleg, hogy ha jól látom a PHP infókat, kissé korlátozott a maximális lekérések száma. Szóval lehet, hogy érdemesebb erre saját (web)szervert üzemeltetni. Jah, közben megtaláltam az extra szabályzatát:
"4.Tilos a szerverről olyan szolgáltatásokat üzemeltetni, melyek indokolatlan terhelést okoznak."
   
KergeDelfin - Törzstag | 667 hsz       Online status #55991   2007.05.21 15:02 GMT+1 óra  
Idézet
Lazarus :
Ez nagyon jónak tűnik, köszönöm a tippet! Ráadásul Magyar fejlesztés


Amennyire tudom, nem az. A név megtévesztő.
Ore wa... yurusaretaintadomo... un... Ore wa yurusaretai...

Isles of Tranquility - Ecco fanoknak kötelező
   
monostoria - Törzstag | 3284 hsz       Online status #55984   2007.05.21 14:30 GMT+1 óra  
ez is igaz
Engem csak két szakma érdekel... basszak ma, vagy ne basszak ma...
   
g_imi - Tag | 236 hsz       Online status #55983   2007.05.21 14:29 GMT+1 óra  
Én is megnéztem. Tényleg tök jó.
Lazarus nem ajánlanám a flash-t, mert tudomásom szerint (javítsatok ha nem így van) a flash player -nek nincs hardveres támogatása, így lehet h 1 idő után nem tudná kiszolgálni az igényeidet.
Én személy szerint a java-ra voksolnék, mivel szinte mindenre lehet találni hozzá megfelelő csomagokat, és esetleg ha a 3d grafikában is járatos vagy akk a java3d-vel 3d-re is varázsolhatod a gamet. Adatbázisokat is viszonlag könnyen lehet kezelni benne.

   
monostoria - Törzstag | 3284 hsz       Online status #55946   2007.05.21 11:25 GMT+1 óra  
jajah, az OpenLaszlo nem rossz cucc
Engem csak két szakma érdekel... basszak ma, vagy ne basszak ma...
   
Lazarus - Törzstag | 313 hsz       Online status #55934   2007.05.21 09:38 GMT+1 óra  
Ez nagyon jónak tűnik, köszönöm a tippet! Ráadásul Magyar fejlesztés
█▓▒░ All system gone, prepare for downcount! ➡ ➎➍➌❶ Offblast! ➔
   
kicsy - Szerkesztő | 4304 hsz       Online status #55928   2007.05.21 08:44 GMT+1 óra  
Vess egy pillantást szerintem az OpenLaszlo-ra.
kicsy ● SilentVertigo Team - project Solarah
http://blog.yscik.com
   
Lazarus - Törzstag | 313 hsz       Online status #55924   2007.05.21 08:23 GMT+1 óra  
Üdv!

Bocs hogy új topikot nyitok, de nem találtam ehez a témához megfelelő topikot.

Szeretném átportolni egy körökre osztott félig javascript / félig PHP alapú multis játékomat realtimera... nos ezt megtehetném úgyis hogy a kód nagyrészét átforgatom Javascriptbe, de végiggondolva ha már ilyenre szánom el magam talán okosabb döntés lenne ha Java vagy Flash-be írnám meg az egészet.

többszemélyes multit akarok olyan adatbázis-kliens kapcsolattal ami akár többszáz ember aktív játéka esetén sem fossa össze magát.

A Javascript előnyei:
- Már ismerem
hátrányai:
- Megkell szenvedni a böngészőfüggetlenségért
- Túl sok komplikáció léphet fel a böngészők különböző beállításainak köszönhetően
- MySQL szervert harmadkézből éri csak el
- Nem bírja a terhelést (túl sok kép egyszerre való kezelése)
- Önmagában nem képes hangokat lejátszani

Flash:
- Másodkézből éri csak el a MySQL szervert
- Kiválóan kezeli a hangokat, képeket
- Minden böngészőben ugyanúgy jelenik meg

Java:
- Direkt kapcsolat MySQL szerverrel
- Kizárólag objektumorientált nyelv (számomra hátrány )
- Minden böngészőben ugyanúgy jelenik meg
- Bizonyította rátermettségét a runescape-el

Azon is gondolkoztam hogy talán írok egy saját adatbázist amire bármelyik nyelven direkt kapcsolatot tudok létesíteni, csak nem tudom mennyire lenne kivitelezhető. Ha egy szerveren másodpercenként 200szor nyitogatnak és írogatnak egy szerencsétlen txt filet az működőképes alternatíva-e.

Saját szerver hostolására sajnos nincs lehetőségem.

Szóval a lényeg hogy tudjon alfa csatornás képeket megjeleníteni és azokat elfogadható FPS mellett megjeleníteni ( max ~100PNG / min ~30 FPS ), wav vagy mp3 fileokat lejátszani egyszerre több csatornán és ~300 klienst maximum fél másodperc késéssel kiszolgálni másodpercenkénti ~20 bájtos kliensre jutó adatforgalom mellett.

Előre is köszönöm a javaslatokat!

Vagy ezek az elvárások túl magasak a böngészőben futtatható programnyelvekkel szembern?
█▓▒░ All system gone, prepare for downcount! ➡ ➎➍➌❶ Offblast! ➔
   
> 1 <