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

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2197
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1654
syam:    1491
Korábbi postok
> 1 < [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] [40] [45] [50] [55] [60] [65] [70] [75] [80] [85] [90] [95] [100] [105] [110] [115] [120] [125] [130] [135] [140] [143]
itamas - Tag | 134 hsz       Online status #212658   2019.08.04 08:39 GMT+1 óra  
Asylum: "itt van két régebbi tisztán konzolos játékom:"

Az imént le is töltöttem őket, és átnézem-kipróbálom majd.
Ahogy Plat is írta, a grafikus megjelenítés biztosan sokat dob egy játékon, de azért anélkül is lehet élvezetes.
Gondolom, nagy vonalakban egy program vázlata megegyezik mind a konzolos, mind a grafikus módban, csak utóbbi látványosabb.
   
Asylum - Törzstag | 5500 hsz       Online status #212657   2019.08.04 08:38 GMT+1 óra  
Idézet
plat :
elvileg



[off]
Pistike odamegy az apjához, és megkérdezi:
- Apa, mi a különbség aközött, hogy "elméletileg" és "gyakorlatilag"?
Erre az apja odamegy az anyósához, és azt kérdezi:
- Mondja, Mama, mit csinálna, ha egy kétméteres néger adna magának 5000 dollárt, hogy lefeküdjön vele?
Mire az anyós:
- Fiam, az én koromban az ember ne legyen válogatós, és különben is kell a pénz.
Erre az apa odamegy a feleségéhez:
- Drágám, mit csinálnál, ha egy kétméteres néger felajánlana 5000 dollárt, hogy lefeküdj vele?
Mire a felesége:
- Tudod, hogy szeretlek, de hát a gyereknek kell a cipőre a pénz, és nyaralni is el kéne menni, szóval feláldoznám magam...
Erre az apa odamegy a nagylányhoz:
- Kislányom, mit csinálnál, ha egy kétméteres néger adna neked 5000 dollárt, hogy lefeküdj vele?
Mire a lány:
- Tudod Apa, én már nagykorú vagyok, és szívesen kipróbálnám, főleg, ha ennyi pénzt kapnék érte.
Erre az apa azt mondja Pistikének:
- Látod kisfiam, elméletileg most van 15000 dollárunk, gyakorlatilag viszont három rossz ribanccal élünk együtt!
[/off]
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
plat - Tag | 56 hsz       Online status #212656   2019.08.04 08:35 GMT+1 óra  
Igen, meg tudom érteni, kicsit más a suliban a helyzet, mint otthon elpötyögni. Viszont már elvileg lenne idő.

   
Asylum - Törzstag | 5500 hsz       Online status #212655   2019.08.04 08:30 GMT+1 óra  
Pont azért csináltam konzolban mert nem akartam grafikával szarakodni (amikor 1 hét van egy beadandóra, akkor nem állok neki paint-ben rajzolgatni meg directx-et debugolni )
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
plat - Tag | 56 hsz       Online status #212654   2019.08.04 08:26 GMT+1 óra  
Szerintem valami grafikával mindjárt jobb lenne tutorialnak, önmagában ilyeneket odaadni nem sokat ér, mert nem gondolkodik rajta az illető. Viszont a program teljes felépítése sokat segíthet, én inkább ezzel voltam gondban annak idején.

   
Asylum - Törzstag | 5500 hsz       Online status #212653   2019.08.04 08:17 GMT+1 óra  
Konzolban akár tetrist is lehet írni; itt van két régebbi tisztán konzolos játékom:

aknakereső:
https://www.dropbox.com/sh/ghjiz49yup54jjj/AABW1-eU8UTbD1gxbb2RuXoIa?dl=0

faltörő:
https://www.dropbox.com/sh/b9sbltaanq84fmh/AADQJ2whu6HMGB36BuT89k_-a?dl=0

illetve egy tűzoltó AI (ez nem játék, beadandó volt):
https://www.dropbox.com/s/qary3g3y5zr88r2/MultiRobot.zip?dl=0

Lehet, hogy érdemes lenne ezeket is kicsit felújítva berakni a C++ tutorok közé

Ezt a hozzászólást Asylum módosította (2019.08.04 08:24 GMT+1 óra, 16 nap)
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Parallax - Tag | 609 hsz       Online status #212652   2019.08.03 15:09 GMT+1 óra  
Idézet
itamas :

Parallax:Egyébként leginkább azok kavarnak be nekem a különböző fejlesztőeszközöknél, hogy mit hová kell írni-elhelyezni bele, minek hol van a helye.


Itt szétválasztanám a dolgokat. Először is van a "sima" nyelv gyakorlása, amit más is javasolt. Sima ConsoleApp és egy editor + fordító kell hozzá, semmi más. Ez akár lehet a C::B + mingw is, vagy a sokat emlegetett VS2019 is. Nem kell semmit állítgatni van egy main és már mehet is a gyakorlás/tanulás.

Amit te írtál az a UI (tool, editor) fejlesztés. Ehhez inkább a Qt-t javasolnám, van saját eszköze is a Qt Creator, ahol ugyanúgy a szokásos dupla klikk és írod az eventbe, amit szeretnél. Igazából ezeket a kódokat mindenféle generátor nélkül is meg lehet írni és ha érted, amit csinálsz meg is kell tudni írni. Ezzel a területtel akkor foglalkoznék, ha már a C/C++ teljesen álomból felijesztve is megy.

A harmadik a library fejlesztés (engine), amikor többé-kevésbé 3rd party cuccokból felépítesz egy kis rendszer, amivel rajzolgatsz, zenét lejátszol, meg ilyenek. Itt már nagyon kell tudni mi honnan jön, mit miért csinálsz, hogyan épül fel az architektúra stb. Ehhez már kell algoritmizálni, patterneket tudni, szoftvert tervezni, meg ilyenek. Elég sok területet érint, amit persze menet közben is fel lehet szedni, de itt szerintem még alapvető hiányosságok vannak, amihez a legelsőt kéne gyakorolgatni. Illetvve sima Conzolos appnál is lehet már akár szöveges játékot írni, ahol előjöhet pár összetettebb dolog.

   
Asylum - Törzstag | 5500 hsz       Online status #212651   2019.08.03 14:32 GMT+1 óra  
Idézet
Instalok :
eleinte semmiképpen ne akarj



Itt a legtöbben engine írással tanultak meg programozni
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Instalok - Tag | 619 hsz       Online status #212650   2019.08.03 13:04 GMT+1 óra  
UE4 alatt is lehet c++ban írni a gameplay kódot. Ha tényleg csak az érdekel, akkor azt is megnézheted. Ha alacsonyabb szintű dolgokkal is akarsz foglalkozni, akkor tudom ajánlani a lentebb linkelt SDL-t, ami csak az alapvető dolgokat biztosítja számodra (ablakkezelés, képek betöltése, megjelenítése, stb.)

Ettől függetlenül továbbra is célravezetőbbnek tartom, ha minden egyéb nélkül megismerkedsz a c++al, mint nyelvvel, illetve az egyéb dolgokkal, mint objektum-orientált tervezés és egyebek. A programozásban egyébként sem egy adott részfeladat megvalósítása a nehéz, hanem a megfelelő rendszer megtervezése és megvalósítása.

   
itamas - Tag | 134 hsz       Online status #212649   2019.08.03 12:51 GMT+1 óra  
Instalok: még nem próbáltam ki a VS-t, de lehet, hogy elkerülhetetlen lesz. Eddig a Dev C++ és igen, a C::B voltak nekem, mint kicsi, ingyenes, nem bonyolult (3 olyan tulajdonság, ami miatt nagyon vonzó számomra :-) ) fejlesztőfelületek C++-hoz. Amit szeretnék velük, azok kezdetben csupán egyszerű 2d-s játékocskák (kb. amiket eddig is csináltam), aztán később a nagyobb lélegzetű játékok, esetleg felhasználói programok, ha már megértettem ezt a programnyelvet - hiszen sokfelől hallani, hogy ez az "igazi" játékfejlesztő nyelv. Persze látom én is, hogy nagyon népszerűvé vált a Unity (gondolom, nem is alaptalanul, és majd én sem hagynám ki), de azért a C++-t ismerni nem hátrány.
   
Instalok - Tag | 619 hsz       Online status #212648   2019.08.03 11:14 GMT+1 óra  
@itamas:
Csak úgy kíváncsiságból... kipróbáltad a Visual Studio-t? Mert eddig C:B-t emlegettél. VS-nél a legtöbb dolog már alapból telepítve van, illetve, ha olyat használsz, aminek van "SDK telepítője", akkor az általában automatikusan megoldja az útvonalakat.

Egy-egy framework/lib használatához egyébként legfeljebb néhány útvonalat (pl. include path, binary path) kell konfigurálni a fejlesztőkörnyezeten belül (amit egyébként a háttérben átad a fordítónak).

Pontosan mi az, amit szeretnél? Ha nem akarsz engine-t írni (eleinte semmiképpen ne akarj), akkor valamilyen kész megoldás lenne jó számodra. Ha mégis alacsonyabb szintű dolgokkal szeretnél indítani, akkor használhatsz pl. SDL-t, amivel néhány sorban tudsz ablakot létrehozni, stb.

Vannak kész engine-ek is, de ezeket régóta nem követem. Anno ilyenek voltak, mint Ogre3D, Irrlicht, ilyesmik. Nem tudom ezek mennyire up-to-date-ek (manapság már a fél világ Unity-t vagy UE4-et használ), ez a topic is már 4 éves.

   
itamas - Tag | 134 hsz       Online status #212647   2019.08.03 08:45 GMT+1 óra  
Asylum: "nézd mit találtam neked"

Azt a "Készítsünk 16 játékot C++-ban" sorozatot én is láttam a YT-on; jó is lenne, csak az SFML-t nem bírtam beépíteni a C::B-ba, pedig mindent úgy csináltam, ahogy a leírásában volt.

Parallax: A C::B-ot mindenképp használni fogom továbbra is (bár már a Borland C++-szal is haladtam valamelyest). Egyébként leginkább azok kavarnak be nekem a különböző fejlesztőeszközöknél, hogy mit hová kell írni-elhelyezni bele, minek hol van a helye. Van, ahol eleve szépen le van írva kommentelve, hogy pl. ez a felhasználó függvényeinek elhelyezési pontja, de ennél a nyavalyás Borland C++-nál pl. nincs így, nekem kell kitalálnom. De azért egy Windowsos alkalmazás fejlesztése még így is kényelmesebb vele, mint a C::B-ban, mert ott nincs Form meg ilyesmi, hanem szövegesen kell megoldani.
Dehát mindennek megvan az erőssége meg a gyengéje is.
   
Instalok - Tag | 619 hsz       Online status #212643   2019.08.01 08:23 GMT+1 óra  
Nagyjából fél éve raktam fel a VS 2017-et, egész gyorsan felmászott, és a default beállítások pedig emlékeim szerint jók voltak. Főleg, ha csak konzolos alkalmazást akarsz fejleszteni.

   
Parallax - Tag | 609 hsz       Online status #212642   2019.08.01 02:05 GMT+1 óra  
A VS-el az a baj, hogy egy nagy állat, amit tovább tart felrakni, mint a Windows-t. Egy kezdő már a telepítésnél el fog akadni, hogy egyáltalán milyen komponenseket kell felrakni. Ha mindenáron egy komplett IDE kell, akkor kezdésnek inkább a Code::Blocks mingw. Ezzel is az első kb. 2 évben szigorúan csak ConsoleApp és a C, majd C++ alapok. C-hez a Programfejlesztés C nyelven könyvet, C++ hoz meg a szoftverfejlesztés C++ nyelven könyvet ajánlanám. Egyikben sincs semmilyen engine hókusz-pókusz, csak színtiszta konzolos programozás. Semmilyen OS, vagy fordító specifikus dolgot nem tanulnék kezdetben még, főleg nem ilyen Borland C++ féléket.

   
Geri - Törzstag | 2197 hsz       Online status #212641   2019.08.01 00:43 GMT+1 óra  
Idézet
plat :
glBegin glEnd


azt már megették a langolierek

   
Asylum - Törzstag | 5500 hsz       Online status #212638   2019.07.30 21:15 GMT+1 óra  
@itamas: nézd mit találtam neked:
https://youtu.be/N60lBZDEwJ8

Akit meg a zene érdekel (szimfonikus zenekarral):
https://youtu.be/a7tAPh06kIg

Nagyon ajánlom!
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
plat - Tag | 56 hsz       Online status #212634   2019.07.30 20:25 GMT+1 óra  
Most nem a legszebb megoldás, de még mindig ott van a C::B mingw verzión belül az opengl példa windowsra. Ha grafika kell gyorsan a könnyebb megértéshez, a glBegin glEnd és társai könnyű alternatíva amíg nem komoly a dolog.

   
Matzi - Szerkesztő | 2528 hsz       Online status #212631   2019.07.30 19:49 GMT+1 óra  
Jobbat mondok, Visual Studio 2019!
Mellesleg ha beszélsz és olvasol angolul, akkor az internet tele van forrásanyagokkal, részletes tutorialokkal, meg minden egyébbel. Bár nekem lett volna ilyen gazdag segédanyag gyujteményem annak idején.
Annak viszont nem láton én sem értelmét, hogy egy elavult IDE saját butykolt grafikai konyvtárát kezdd el használni.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Instalok - Tag | 619 hsz       Online status #212628   2019.07.30 19:00 GMT+1 óra  
Akkor már inkább 2017. Az tutira ingyenes is, és lehet vele modernebb c++ban (pl. cpp17) fejleszteni. Alapvetően jól be szokta importálni a korábbi verzióval készült projekteket.

Amúgy @itamas én lehet fordítanék a dolgokon. Nem véletlenül javasoltam / javasoltuk azt, hogy előbb magával a nyelvvel ismerkedj meg, és azután foglalkozz grafikával, mert így egyszerre két dolog is ismeretlen. Nagyon sok alapvető (de szükséges) ismeret van, amivel mindenféle aranyos kisebb program keretén belül meg lehet ismerkedni, a nyelvi elemektől a tervezési mintákon át mindenféle dolog. Ezeknek az ismerete nélkül sajnos olyan hibákba fogsz akadni, mint a mostani is - nomeg nem ártana tudni, hogy c++ban mit csinál a & meg a * és a társai. És hidd el, ezt nem bántásból mondom, de ez (főleg hosszú távon) nem célravezető. Megértem, hogy rögtön grafikus dolgokkal izgalmasabb foglalkozni, de akkor már inkább Unity vagy UE4 vagy valami hasonló dolog. Egyébként, ahogy korábban említettük, Asylum blogján van c++ sorozat is, ha mást nem, akkor elolvasni érdemes lehet.

   
Asylum - Törzstag | 5500 hsz       Online status #212625   2019.07.30 15:59 GMT+1 óra  
btw. fent vannak az új kódjaim githubon, van winapi/gdiplus példa is. Leszeded a Visual Studio 2015-öt és hajrá.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
itamas - Tag | 134 hsz       Online status #212624   2019.07.30 09:26 GMT+1 óra  
Parallax:
Igen, próbálok szakirodalomhoz jutni; ami most nekem van nyomtatott formában, az:
Bartha Attila: Gyakorló C programok MS-DOS-ra,
Windos alkalmazások fejlesztése C++ Builder 3 rendszerben (Computerbooks),
Stanley B. Lippmann: C++ először.
Sima C-t használó fejlesztőkörnyezetnek a Game Editor-t tudnám említeni. Nem tudom, ismered/ismeritek-e, mindenesetre ez a honlapja: http://game-editor.com/Main_Page
Ahogy időm engedi, átolvasom ezeket a könyveket. Az első kettő nagyjából megvan, a C++ először-t viszont még nem nagyon vettem elő, holott lehet, hogy ezzel kellett volna kezdenem.
Általában ha valami problémába ütközök, a Google-t veszem elő, de az meg sokszor nem azt adja, amit keresek. Pl. most is bújtam a függvényhívás mikéntjével kapcsolatban, de csak nem akart semmi használhatót mutatni...
   
itamas - Tag | 134 hsz       Online status #212623   2019.07.30 09:10 GMT+1 óra  
" timer->OnTimer = &(c.TimerTick); "

Grrr, még mindig nem jó; most a 'c'-vel van baja:
[C++ Error] Unit1.cpp(90): E2451 Undefined symbol 'c'
A MyClass c;-re meg Declaration syntax error-t ír ki.

Egyébként tudja a __fastcall-t a BC6; a többi függvénye is ilyen.

Ezt a hozzászólást itamas módosította (2019.07.30 09:17 GMT+1 óra, 21 nap)
   
Parallax - Tag | 609 hsz       Online status #212622   2019.07.30 01:29 GMT+1 óra  
Idézet
itamas :
Csak olyan égő számomra, hogy nem értem pontosan ezeknek a jelöléseknek (*,&, stb.) a helyét és működését a nyelvben, pedig ez - gondolom - nem a fejlesztőkörnyezettől függ, tehát majd a VS is jól megizzaszt. Tényleg nem könnyű ez a C++; sok apró részlet van benne, amin könnyű elbukni.


C/C++ eléggé platformfüggetlen, ezért általános értelemben véve nem is jelenthető ki, hogy valaki a világ összes platformjára az összes eszközzel tud fejleszteni C/C++ programot, de kis betanulással, ha ismeri magát a nyelvet, akkor nincs akadálya. C-ben már Commodore gépekre is lehetett programozni, ennyire rugalmasan használható a nyelv.

Először csak C-t tanulnék a helyedben, mert az még viszonylag egyszerű, de a *, & "jelekkel" már ott is lehet találkozni és begyakorolni. (Programfejlesztés C nyelven könyv) És elsőre nem is használnék semmilyen IDE-t hanem csak egyszerű kódszerkesztőt és parancssori fordítót. Ha az alapok már mennek, akkor lehet áttérni egy IDE-re, ami elfed egy csomó mindent, de azért nem túl nagy se ahhoz képest, amilyen programot fejlesztesz. (Code::Blocks például)
Amikor már megy a C, akkor érdemes áttérni C++ ra, OOP-re, meg amik ezzel járnak, később meg a C++03 utáni új nyelvi elemeket lehet majd tanulgatni, ha már eddig minden megy.

A VS komoly architektúrákhoz való és csapatmunkára. Akár 100 projectet is tud kezelni egy solution-ban, ezekre teszteket futtatni, vezió követést kezelni, project management stb. IDE nélkül nehéz lenne komoly projecteket kezelni, de elsőre, amikor csak egyedül vagy és 1-2 file méretű rendszerről van szó egy ConsoleApp projectben szerintem ettől sokkal egyszerűbb kisebb eszköz is elég a fejlesztéshez.


A project fejlesztésnél pedig szerintem fokozatosan érdemes haladni. Elsőre nem kell semmilyen rajzoló library, a sima konzolra irkálás is megteszi és elég sokáig meg lehet ezzel is lenni. Ha már mindent értesz a továbbhaladáshoz akkor érdemes valami libbel folytatni. Akár a Qt is lehet saját fejlesztő eszközei is vannak. Ki lehet tenni pár gombot, szövegmezőt, meg rajzolgatni, kezdésnek, meg az editor tanulásához teljesen jó. Utána OpenGL, vagy akármi, akár a VS-el is, de újabban CMake-t szoktak használni, aztán azzal tetszőlegesen projectet generálni. Van olyan, hogy egy projecten belül nem is ugyanazt az IDE-t, meg oprendszert használják a fejlesztők.

   
Asylum - Törzstag | 5500 hsz       Online status #212621   2019.07.29 22:15 GMT+1 óra  
a Borland tud egyáltalán __fastcall-t? Jó ideje a visual studio-ban is megszűnt
Btw. ez messze nem szabványos C++, úgyhogy rövid időn belül hatalmasat fogsz szopni...

Némi guglizás után azt találtam, hogy az OnTimer az egy __property nem szabványos minősítővel ellátott függvénypointer, ami elvileg egy member függvényre kell mutasson:

http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/ExtCtrls_TTimer_OnTimer.html

A hibaüzenet is valami hasonlót próbál jelenteni. Valahogy így próbálkoznék (de inkább azt javaslom hogy hagyd a faszba, főleg ha még a normál C++t sem ismered):

Kód:
class MyClass : public TObject
{
public:
    void __fastcall TimerTick(TObject* sender) {
        // ...
    }
};

MyClass c;

int main(...)
{
    timer->OnTimer = &(c.TimerTick);
}


De mégegyszer hangsúlyozom, hogy ez KURVÁRA NEM SZABVÁNYOS!
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
itamas - Tag | 134 hsz       Online status #212620   2019.07.29 13:18 GMT+1 óra  
Még mindig nem jó... átírtam a függvényem fejlécét erre:
void __fastcall alakmozgatas(TObject *Sender)
és még az & jelet is a függvényhíváshoz, ahogy Asylum javasolta, de most ez a hibaüzenet:
[C++ Error] Unit1.cpp(90): E2034 Cannot convert 'void (_fastcall *)(TObject *)' to 'void (_fastcall * (_closure )(TObject *))(TObject *)'
Hát, ha ez sem fog menni, akkor lehet, hogy tényleg a Visual Studio következik, végső megoldásként.
Csak olyan égő számomra, hogy nem értem pontosan ezeknek a jelöléseknek (*,&, stb.) a helyét és működését a nyelvben, pedig ez - gondolom - nem a fejlesztőkörnyezettől függ, tehát majd a VS is jól megizzaszt. Tényleg nem könnyű ez a C++; sok apró részlet van benne, amin könnyű elbukni.

"Úgy vélem nem teljesen érted a kapcsolatot a programozási nyelv és annak célja között."

Nekem inkább úgy tűnt, mintha az eddig kipróbált fejlesztőeszközök bizonyos mértékben mind rendelkeztek volna sajátosságokkal, különbségekkel, eltérésekkel, mint a többi. Nagy vonalakban a nyelv egyezik, mert C++-ról szól mindegyik, de a kódolás maga lehet eltérő stílusú, és most nemcsak azt értem ezalatt, hogy konzolos vagy ablakos programot írok.
Ezek alapján hogyan és mikor mondhatja el valaki, hogy tud C++-ban programozni, ha nem is biztos, hogy érti az adott fejlesztőeszközt? Lásd: én most belefogtam a Builderrel, de a C::B, a Dev C++ meg a VC megint más.

Ezt a hozzászólást itamas módosította (2019.07.29 13:32 GMT+1 óra, 22 nap)
   
Instalok - Tag | 619 hsz       Online status #212619   2019.07.29 11:26 GMT+1 óra  
Idézet
hiszen itt van Canvas, amin lehet rajzolni (a C::B-ban és a Dev C++-ban nincs???).

???
Mi köze van a fejlesztőkörnyezetnek a rajzolgatáshoz? Úgy vélem nem teljesen érted a kapcsolatot a programozási nyelv és annak célja között.

Az aktuális kérdéshez pedig ismerni kellene a TTimer osztályt és annak az OnTimer adattagját. Gyors gugli alapján a szignatúra
Kód:
void __fastcall (TObject *sender)
<-- nézzen ki hasonlóan a függvényed, és akkor valószínűleg nem fog problémázni. Ha meg mégis, akkor a konkrét hiba alapján könnyebb választ adni.

És amúgy ja... Visual Studio?

   
Asylum - Törzstag | 5500 hsz       Online status #212618   2019.07.29 11:16 GMT+1 óra  
Kód:
= &alakmozgatas;


És ellenőrizd, hogy a paraméterlista egyezik-e.

Btw. többen elmondták lent, hogy Visual Studio-t használj.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
itamas - Tag | 134 hsz       Online status #212617   2019.07.29 10:59 GMT+1 óra  
Sziasztok ismét!
Sajnos sem a C::B-hoz, sem a Dev C++-hoz nem tudtam beállítani sem az SFML-t, sem az SDL-t, úgyhogy ezekkel eléggé háttérbe szorul a C++-os pályafutásom. Viszont előszedtem az ősöreg Borland C++ Builder 6-ot, és abban fogtam hozzá grafikázni. Ez sokkal kényelmesebb, mint az előzőek, hiszen itt van Canvas, amin lehet rajzolni (a C::B-ban és a Dev C++-ban nincs???).
El is kezdtem egy kis játékot, de megakadtam a saját függvényem hívásánál a Timerrel.
Tehát, van egy saját függvényem:
Kód:
void alakmozgatas()
{
...
}

és van az ezt hívó időzítő a FormCreate-ben:
Kód:
alakmozgato=new TTimer(this); //Időzítő létrehozása
alakmozgato->Interval=5; //Időtartam beállítása
[b]alakmozgato->OnTimer=alakmozgatas();[/b] //Ez történjen, ha lefutott.

De az utolsó sorra azt írja ki, hogy: Not an allowed type. Ha pedig elhagyom a zárójeleket, akkor még cifrábbat. Vajon mi a baj vele; mit csináltam rosszul?
   
Asylum - Törzstag | 5500 hsz       Online status #212559   2019.07.07 11:54 GMT+1 óra  
Az UE4 teljesen új fejlesztés, köze nincs az elsőhöz.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Parallax - Tag | 609 hsz       Online status #212557   2019.07.06 22:54 GMT+1 óra  
Azért az Unreal se mai darab 94 óta fejlesztik. Azért saját minden még az editor felülete is, mert abban az időben nem is volt más választás. Ma már azért egy modernebb motor használja a Qt-t, valamilyen fizikai motort és a többi. Persze, ha valami speckó fizika kell mondjuk egy Forza-hoz ott a "mainstream" megoldás édeskevés.

   
Elodin - Tag | 184 hsz       Online status #212556   2019.07.04 16:36 GMT+1 óra  
Az unreal engine önmagában sok a legtöbb esetben VS-nek VAX nélkül.

   
Asylum - Törzstag | 5500 hsz       Online status #212555   2019.07.04 08:10 GMT+1 óra  
Ha az ArchiCAD 13 millió (ill. annál már több) kódsorából indulok ki, azt az XCode és a Visual Studio is köhögve bár, de elviszi. A kényelmesebb munka miatt csináltam saját projektfájlokat arra a területre amivel dolgozok; megoldva az IntelliSense és a CodeSense működését is (bár az elbaszott include hierarchia meg makrók miatt sokszor nem működik).

Egy játék forráskódja töredéke ennek (mondjuk nincs is tele spanyolviasszal, meg Pascal-ból portolt 2 cm vastag porréteggel lefedett kódokkal...).
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Elodin - Tag | 184 hsz       Online status #212554   2019.07.03 16:05 GMT+1 óra  
Eddigi tapasztalataim szerint azért általában mindenhol visual studio-t használnak.
Bele se merek gondolni, hogy mit csinálna egy C::B azokkal a projektméretekkel, ahol már a visual studio-nak is gondjai vannak.

   
Instalok - Tag | 619 hsz       Online status #212553   2019.07.03 15:20 GMT+1 óra  
Hát azért általában drivert, meg nagyon-nagyon alacsony szintű dolgokat nem írnak (attól függ mondjuk, hogy mire gondolsz...), de például a Vulkan-t használni sem feltétlen egyszerű, nem kell ahhoz assembly, hogy bonyolult legyen...

Az UE4 forráskódja egyébként publikus (és c++), ott az alapnak számító ablakkezelést is kézzel oldották meg, nem használtak hozzá libet. De persze ez a nyelv szempontjából mindegy.

   
itamas - Tag | 134 hsz       Online status #212552   2019.07.03 14:20 GMT+1 óra  
Idézet
Asylum :
a nagy stúdióknak saját (vagy licenszált) motorjuk van (amit persze C++ban írnak), pl. Unreal 4. Magát a játékot abban, vagy egy igények szerint átírt változatában rakják össze.


Ez nagyjából azt jelenti, hogy ők is egy fapados C++-szal indulnak neki (akár egy C::B-szal, vagy Dev C++-szal) és kidolgozzák benne a nekik kellő programot? Úgy értem, hogy - nagyon leegyszerűsítve - pl. egy képpontkigyújtást is Assembly kódban írnak meg benne, tehát a grafikus és más magas szintű részek teljesen saját termés (legalábbis bizonyos stúdióknál)?
   
Instalok - Tag | 619 hsz       Online status #212551   2019.07.02 06:11 GMT+1 óra  
A Visual Studio-t szeretik, ha van rá pénz (otthon ingyenes), sok-sok más integrációval és egyéb eszközökkel egyetemben. Az IDE csak a programozó kényelmét szolgálja egyébként is. Abban fejlessz, ami a legkényelmesebb számodra.

Egyébként, ha multiplatform kódot készítenek, akkor a legtöbbször valami build toolt használnak hozzá (pl. make), illetve a "projektgenerálást" valami cross-platform dologgal (pl. CMake) végzik, ami egy egységes (szöveges) projektleírás alapján tetszőleges (támogatott) IDE-hez tud projektfájlokat készíteni.

   
Asylum - Törzstag | 5500 hsz       Online status #212550   2019.07.02 04:52 GMT+1 óra  
a nagy stúdióknak saját (vagy licenszált) motorjuk van (amit persze C++ban írnak), pl. Unreal 4. Magát a játékot abban, vagy egy igények szerint átírt változatában rakják össze.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
itamas - Tag | 134 hsz       Online status #212549   2019.07.01 20:57 GMT+1 óra  
Igen, a legtöbb programozási nyelv gondolom egyszerű szöveges állományból áll csupán.
De a játékfejlesztő stúdiókban is elég ennyi? Ott vajon miben használják a C++-t? Visual Studióban vagy hasonló összetett fejlesztőkörnyezetben alkotnak? Vagy alkalomadtán elég mondjuk a C::B vagy a DEV C++ is?
   
Instalok - Tag | 619 hsz       Online status #212548   2019.07.01 16:10 GMT+1 óra  
a C::B meg DevCpp is csak egy IDE, egyik sem kell ahhoz, hogy fejleszteni tudj c++ban. Elég hozzá egy tetszőleges szövegszerkesztő, egy konzol, és természetesen valamilyen c++ fordító (pl. g++). Ezért is nincs ezekben "benne alapból" a grafikai programozáshoz való dolog - persze aztán ki tudja, h milyen libeket integráltak már azóta bele.

Előkelő helyen pedig azért áll, mert nagyon sok benne a lehetőség. Nagyjából minden az irányításod alatt van, még a memória-kezelés is. Ez persze kezdetekben nehézség (cserébe vannak már shared_ptr és társai), de aki igazán ért hozzá, az megfelelően tudja optimalizálni a programot, aminek következtében igen jó teljesítményt el lehet érni. Nomeg, régebben nem nagyon volt jobb.

   
itamas - Tag | 134 hsz       Online status #212547   2019.07.01 13:29 GMT+1 óra  
Köszönöm mindenkinek a válaszokat!
Ahogy Instalok írta, elég hiányosak még a C++ alapismereteim is, de bátorkodtam volna valami kis grafikus dolgot összehozni elindulásképpen, mert azért az általános programozási fogalmakkal (elágazás, tömb, ciklus, stb.) és használatukkal tisztában vagyok más fejlesztőeszközök jóvoltából.
Csak pár síkidom, esetleg valami kép kirajzolásáról, mozgatásáról, megsemmisítéséről lett volna szó, gyakorlásképpen. De aztán nagyot néztem, amikor rádöbbentem, hogy alapban ez nincs benne sem a C::B-ban, sem a Dev-C++-ban, hanem külön kell beépíteni a grafikus lehetőségek elérését - pedig érdekes módon a C++ a játékprogram készítésben állítólag eléggé előkelő helyen áll.
Amúgy tényleg elég lenne ami a konzolban alapban benne van, csak hát grafikával mégis jobban néz ki...
Asylum C++-os leírásait is bújni fogom mostantól.
Turidoo, köszi az említést az SFML-ről; megnéztem amit belinkeltél, és egész jó multimédiás kiegészítőnek tűnik, amely grafika mellett a hangot is kezeli.
   
Asylum - Törzstag | 5500 hsz       Online status #212546   2019.07.01 08:39 GMT+1 óra  
Igen, de ahogy a cikkben is említem, Visual Studio-t használok a C:B alá ugyanis nehéz behackelni a szükséges libeket

Btw. a kód refaktorálásával elkészültem, szóval valamikor júliusban meg fog történni a rollback és az új kódok feltöltése (64-bit és C++14 alapokon, szóval pl. pont a C++ példaprogjaim kikerültek, néhány kivételtől eltekintve).

Ezt a hozzászólást Asylum módosította (2019.07.01 08:47 GMT+1 óra, 50 nap)
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Instalok - Tag | 619 hsz       Online status #212545   2019.07.01 06:46 GMT+1 óra  
De itt nyilvánvalóan hiányoznak a c++ alapismeretek is. Sajnos tény és való, hogy a c++ önmagában nem egyszerű első ránézésre, így szerintem sem érdemes rögtön fejest ugrani grafikai dolgoknak. Lehet grafikával tanulni programozni, de akkor az valami egyszerűbb dolog legyen, ne c++ és mindenféle lib használata.

Először azt érdemes megtanulni, hogy hogyan lesz cpp/hpp/h fájlokból futtatható állomány, mi mit jelent, mi történik, ha valamit include-olsz, stb-stb. Az alapok nélkül teljesen fölösleges valahogy összehekkelni valamit, meg online tutorialokból összeollózni dolgokat.

Btw, ha Windows-on vagy, akkor C:B helyett ajánlanám a Visual Studio-t Ha nem Windows-on vagy, akkor meg.. miért nem?

szerk.:
Csodálkozok, hogy Asylum nem linkelte be
http://m.cdn.blog.hu/da/darthasylum/tutorials/C++/ch01_hello_world.html

Bár, inkább kezdenék a 2. leckével, ami a fejlesztőkörnyezetről szól
http://m.cdn.blog.hu/da/darthasylum/tutorials/C++/ch02_ide.html

   
turidoo - Tag | 36 hsz       Online status #212544   2019.06.30 23:03 GMT+1 óra  
Egyszer volt dolgom Code::Blocks-szal, tehát csak tippelgetek:
Ha jól látom ez a graphics.hpp az SFML library része. Itt írnak róla hogy kell telepíteni, meg itt is például.
Én grafikán keresztül kezdtem programozni tanulni még jó régen (dos-pascal), pl körök rajzolása ciklusokkal...

   
Asylum - Törzstag | 5500 hsz       Online status #212543   2019.06.30 21:21 GMT+1 óra  
előbb programozni tanulj meg, utána állj neki grafikázni
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
itamas - Tag | 134 hsz       Online status #212541   2019.06.30 12:52 GMT+1 óra  
Sziasztok!
Egy kis grafikus C++ programot szeretnék elkészíteni Code::Blocks-szal, de nem tudom, hogy a konzolából ezt hogyan lehet megoldani. Letöltöttem a graphics.hpp-t az internetről, de fogalmam sincs, hogy hová, melyik mappába kéne elhelyeznem.
Próbálkoztam Dev-Cpp-szal is, de ott sem boldogulok.
A grafikus részhez egyáltalán elegendő ennek a graphics.hpp-nak a megléte, vagy más fájl is kell? És hová kell elhelyezni, meg esetleg ha szükséges, a fejlesztőeszközbe hogyan kell beemelni, hogy érzékelje a meglétét?
   
Geri - Törzstag | 2197 hsz       Online status #212343   2019.02.16 22:55 GMT+1 óra  
Insta: hülyeség, nyugodtan írhatsz 1/sqrt-et, mint ahogy a számadataid is mutatják. ez nem lesz gyorsabb sehogy. ha meg igen, a szuperskalár feléíptés azt is elfedi... esetleg ha nem kell túl nagy precizitás, csinálj egy tömböt és használd azt, úgy nem kell gyököt vonogatni, de az is csak egy lehelletnyivel lesz gyorsabb.

   
Asylum - Törzstag | 5500 hsz       Online status #212342   2019.02.15 14:09 GMT+1 óra  
gyakran hibás eredményt ad, ebből már voltak gondjaim... Szvsz. ilyen minimális eltérés mellett teljesen fölösleges áldozat.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Instalok - Tag | 619 hsz       Online status #212338   2019.02.14 08:26 GMT+1 óra  
Idézet
Matzi :
Szerintem ha benchmarkolni akarod, akkor inkább a sima gyokre számítsd át. Ritkábban kell az inverz gyok, mint a sima, az std megoldását meg ezzel pluszban bunteted, a tobbit meg nem osztod vissza. Nem hiszem hogy nagyon sok múlna rajta, de azért úgy a korrekt.


Igen, ez igaz lehet, de meglepően sokszor kellhet az inverz gyök. Például, ha normalizálsz egy vektort, akkor érdemesebb az inverz gyököt kiszámolni, és a komponenseket végigszorozni vele, mintsem a hosszát (azaz simán gyököt) számolni, és azzal osztani.

Egyébként ez valóban egy mikro-optimalizáció csak legfeljebb, ráadásul kicsit kiszámíthatatlan, hiszen nagyban függ attól, hogy az sqrt hogyan van megvalósítva.

Sőt, nagyon úgy tűnik, hogy az sqrt-t nem érdemes sse utasításra átírni, ha csak egyetlen 32 bites floating point kiszámítása a cél.
Kód:
inline float sqrt_sse(float f)
{
    return _mm_cvtss_f32(_mm_sqrt_ss(_mm_set_ss(f)));
}

inline float sqrt_std(float f)
{
    return ::sqrtf(f);
}

MSVC x86 release
Kód:
sse - 2.690902
std - 2.769703

Online compiler
Kód:
sse - 17.221019
std - 17.279860

   
Matzi - Szerkesztő | 2528 hsz       Online status #212337   2019.02.14 00:54 GMT+1 óra  
Szerintem ha benchmarkolni akarod, akkor inkább a sima gyokre számítsd át. Ritkábban kell az inverz gyok, mint a sima, az std megoldását meg ezzel pluszban bunteted, a tobbit meg nem osztod vissza. Nem hiszem hogy nagyon sok múlna rajta, de azért úgy a korrekt.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Instalok - Tag | 619 hsz       Online status #212336   2019.02.13 11:14 GMT+1 óra  
Találtam az UE4 forráskódban, majd később egy cikkben lehetséges gyorsítást (a pontosság rovására) az inverz gyök számítására. Ennek örömére csináltam is egy kis tesztet. Ha a számok nem hazudnak, akkor az invSqrt a leggyorsabb az összes közül. Valahol érthető, az SSE inkább párhuzamos (pl. 4x32 bit) számításokra való, mintsem 32 bitnyi adatokkal dolgozni.
Kód:
#include <emmintrin.h>
#include <cmath>

inline float invSqrt(float f)
{
    const float x0 = _mm_cvtss_f32(_mm_rsqrt_ss(_mm_set_ss(f)));
    return (x0 * (1.5f - 0.5f * f * x0 * x0));
}

inline float invSqrt_SSE(float f)
{
    const __m128 v = _mm_set_ss(f);
    const __m128 oneHalf = _mm_set_ss(0.5f);
    const __m128 x0 = _mm_rsqrt_ss(v); // 1/sqrt(f) estimate
    const __m128 x1 = _mm_add_ss(
        x0,
        _mm_mul_ss(
            x0,
            _mm_sub_ss(
                oneHalf,
                _mm_mul_ss(
                    _mm_mul_ss(oneHalf, v),
                    _mm_mul_ss(x0, x0)
                )
            )
        )
    );

    return _mm_cvtss_f32(x1);
}

inline float invSqrt_std(float f)
{
    return 1.0f / std::sqrt(f);
}

#include <stdio.h>

#ifdef _MSC_VER
#include <intrin.h>
#pragma intrinsic(__rdtsc)
#else
extern __inline unsigned long long
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
__rdtsc(void)
{
    return __builtin_ia32_rdtsc();
}
#endif

int main()
{
    static constexpr int COUNT = 8 * 1000 * 1000;
    static float f_in[COUNT];
    static float f_out[COUNT];

    for (int i = 0; i < COUNT; ++i) {
        f_in[i] = (float)i;
    }

    unsigned long long t;

    // warm cache
    for (int i = 0; i < COUNT; ++i) {
        f_out[i] = f_in[i];
    }

    // sse + scalar
    t = __rdtsc();
    for (int i = 0; i < COUNT; ++i) {
        f_out[i] = invSqrt(f_in[i]);
    }
    t = __rdtsc() - t;
    printf("invSqrt     - %f\n", (double)t / COUNT);

    // full sse
    t = __rdtsc();
    for (int i = 0; i < COUNT; ++i) {
        f_out[i] = invSqrt_SSE(f_in[i]);
    }
    t = __rdtsc() - t;
    printf("invSqrt_SSE - %f\n", (double)t / COUNT);

    // scalar with std::sqrtf
    t = __rdtsc();
    for (int i = 0; i < COUNT; ++i) {
        f_out[i] = invSqrt_std(f_in[i]);
    }
    t = __rdtsc() - t;
    printf("invSqrt_std - %f\n", (double)t / COUNT);

    return 0;
}

Nálam, MSVC x64 release fordítással:
Kód:
invsqrt     - 2.973184
invSqrt_SSE - 3.576144
invSqrt_std - 3.952989

Egy online compilerrel pedig
Kód:
invsqrt     - 5.130434
invSqrt_SSE - 6.854230
invSqrt_std - 29.393122


szerk.:
Ha valakit esetleg érdekelne, akkor itt van az iterációs módszer levezetése:
Kód:
x = f^-0.5
x^2 = f^-1
x^-2 = f
F(x) = x^-2 - f
F'(x) = -2x^-3

x1 = x0 - F(x0)/F'(x0)
x1 = x0 - (x0^-2 - f) / (-2x0^-3)
x1 = x0 - (x0^-2 - f) * (-1/2)*x0^3
x1 = x0 - (x0 - f * x0^3) * (-1/2)
x1 = x0 + 0.5 * x0 * (1 - f * x0^2)
x1 = x0 + x0 * (0.5 - 0.5 * f * x0^2)

or in another form:
x1 = x0 * (1.5 - 0.5 * f * x0^2)

   
Korábbi postok
> 1 < [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] [40] [45] [50] [55] [60] [65] [70] [75] [80] [85] [90] [95] [100] [105] [110] [115] [120] [125] [130] [135] [140] [143]