Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Simple DirectMedia Layer  (gelezen 3709 keer)

Offline profoX

  • Lid
    • wesley
    • Lionslink
  • Steunpunt: Nee
Simple DirectMedia Layer
« Gepost op: 2007/07/08, 14:38:44 »
Zijn er hier mensen met ervaring met SDL? (Simple DirectMedia Layer?)
Ik ben er deze voormiddag even mee beziggeweest en het bevalt me wel tot hiertoe :)

Dit heb ik net in elkaar geflanst.
Niet echt speciaal, maar de basis van SDL zit er allemaal in verwerkt.
(Clip blitting, Sprite sheets, SDL_Image, SDL_Mixer, Keyboard Input, Event Handling)



Ik ga voor de rest gewoon mijn blog quoten, omdat dat makkelijker is:
Citaat
De SDL_Mixer extensie waarmee het mogelijk is om geluid te mixen is jammer genoeg een beetje aan de zwakke kant, vind ik, zo is het bijvoorbeeld zelfs niet mogelijk om meerdere streams tegelijkertijd af te spelen (bij gewone geluidseffecten is dit wel mogelijk, maar het zou een te hoge overhead geven op het ramverbruik als je alle muziek als effecten in zou laden). Ik denk dat FMOD of IrrKlang een betere keuze is voor professioneel gebruik.

Maar ik amuseer me voorlopig in ieder geval wel met SDL. Het kleine testprogrammaatje dat je op de screenshot ziet is 100% open source. Nouja, de afbeelding op de achtergrond is oorspronkelijk van het internet geript, maar wel hevig bewerkt met Gimp :) De bedoeling van het programma is gewoon om SDL_Mixer en KeyboardInput te testen. En om te knoeien met Clip Blitting en Event Handling (de luidsprekers lichten op wanneer je een toets indrukt)

Ik heb niet heel erg veel moeite gedaan om de sourcecode netjes te houden, maar het valt al bij al nog goed mee, hoewel ik maar 1 bestand + header gebruik (het is maar om te testen hé).

Link naar sourcecode (1,8 MB; GPL v2; C++/SDL)
En nu jullie verhaal. Wie heeft er hier ervaring met SDL? Want ik ben een groentje op dit gebied, maar ben van plan het wel eens uitgebreid te gaan bekijken.

PS: het programma is niet serieus bedoeld, maar gewoon als grap/test :)
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Offline profoX

  • Lid
    • wesley
    • Lionslink
  • Steunpunt: Nee
Simple DirectMedia Layer
« Reactie #1 Gepost op: 2007/07/10, 02:07:00 »
SDL is fun :)

Dit is mijn tweede SDL programmaatje:


Sourcecode: http://wesley.debianbox.be/files/dot.tar.gz
Zoals je kan zien werk ik voortaan in KDevelop. Een super IDE, echt waar!

Ik had daarnet mijn eerste grote SDL blunder gemaakt ;)
Ik vergat oude SDL_Surfaces te free'en uit het geheugen waardoor er na 5 minuten tijd al meer dan 200 MB geheugen werd gebruikt door het programma :P is nu gefixt (normaal gezien max. 1,5 MB geheugengebruik nu)
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

NoiK

  • Gast
Simple DirectMedia Layer
« Reactie #2 Gepost op: 2007/07/10, 11:48:31 »
hey aan dit te zien is SDL erg leuk, in windows wilde ik er ook al eens aangaanzitten, maja ik denk dat ik van de week me er eens ook in ga verdiepen

nog tips/sites voor me?:P

EDIT:
trouwens al die plaatjes enzoo die je gebruikt, heb je toch niet zelf gesoept ofzo, anders ken ik nu al zeggen SDL is nix voor mij aangezien ik geen designer in me heb

Offline profoX

  • Lid
    • wesley
    • Lionslink
  • Steunpunt: Nee
Simple DirectMedia Layer
« Reactie #3 Gepost op: 2007/07/10, 16:29:01 »
Nee. Je moet niet kunnen tekenen op SDL te gebruiken, maar het helpt natuurlijk wel als je bepaalde animaties wilt maken.

De afbeeldingen die ik gebruik zijn afkomstig van het internet en vervolgens bewerkt met Gimp.

Als je hulp wil, vraag maar :)

Deze site is erg handig om met SDL te beginnen, ookal heb ik het gevoel dat de auteur van de tutorials zelf nog niet heel erg veel weet van C++ (ofwel: hij schrijft een beetje slordige code)
http://lazyfoo.net/SDL_tutorials/index.php

Have fun!

PS: het IRC kanaal ##c++, #gamedev en #sdl op irc.freenode.net kunnen wel handig zijn, ookal zijn die laatste twee redelijk stil.
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

NoiK

  • Gast
Simple DirectMedia Layer
« Reactie #4 Gepost op: 2007/07/10, 19:52:55 »
ik wil niet te ver uit het " etalage"  topic raken maar zit er standaard geen compiler ingebouwd??
ik heb een beetje met synaptic gekeken naar GCC keb maar een versie geinstalleerd alleen ken nog niets compilen.
hij herkend de command gcc niet..

EDIT: ben al verder door in synaptic te zoeken naar "build-essential" daarmee had ik een pakketje geinstalled waar meerdere compile dingen in zaten..

kging alleen een hello world tikken maar deze wil die al niet eens compilen terwijl ik toch denk dat ie wel goed was :P
ff 1tje van internet testen om het zeker te zijn.

humzz ff een nieuw topic aangemaakt voor deze vraag

Offline profoX

  • Lid
    • wesley
    • Lionslink
  • Steunpunt: Nee
Simple DirectMedia Layer
« Reactie #5 Gepost op: 2007/07/11, 04:52:03 »
Ik raad je sterk aan om een professionele IDE te gebruiken :) op mijn laatste screenshot gebruik ik bijvoorbeeld KDevelop. Ik moet eigenlijk nooit in de commandline zijn. Alles wat ik nodig heb is ingebouwd in KDevelop. Inclusief geheugenchecker en debugger.

Er zijn nog voldoende andere IDE's. Volg gewoon de eerste stap in die SDL "tutorial reeks" die ik je gaf en daar zie je uitleg over het opstellen van verschillende IDE's op linux. Mijn persoonlijke favoriet is KDevelop, maar dat wist je ondertussen al ;)

Anyway. Als er nog vragen zijn: vraag maar raak!
Veel succes!

PS: je zou wel een beetje C++ kennis moeten hebben om de tutorials op die website enigszins te kunnen volgen.
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

NoiK

  • Gast
Simple DirectMedia Layer
« Reactie #6 Gepost op: 2007/07/11, 11:39:39 »
kennis van C++ is er wel en om in een terminal te programmeren is ook nie verkeerd, maja ik kon al niet eens een IDE installeren aangezien mijn ubuntu zegt dat er geen GCC in zit, en dat terwijl "build-essential" is geinstalled en een aantal meer, kwas nl. al bezig geweest in dit topic http://forum.ubuntu-nl.org/topic/12535

hoe deed jij ut gcc installen dan?

Offline profoX

  • Lid
    • wesley
    • Lionslink
  • Steunpunt: Nee
Simple DirectMedia Layer
« Reactie #7 Gepost op: 2007/07/11, 11:51:40 »
En eindelijk eens een keer iets dat echt bruikbaar begint te worden :)






http://wesley.debianbox.be/files/pong.tar.gz
(GPL v2 licentie)

Credits:
- graphics door yours truly gemaakt in Gimp
- code door yours truly met dank aan KDevelop en SDL
- geluidseffecten gebruikt van "Cleanus"
- muziek op de achtergrond van Jogeir Liljedahl

Details:
- geschreven in C++ met SDL (SDL_gfx, SDL_ttf, SDL_image, SDL_mixer)
- op de schreenshots zie je al dat elke achtergrond een beetje verschilt, de achtergrond is constant in beweging.
- de infoboxen in het midden van het scherm hebben ware alpha transparancy (dankzij sdl_gfxPrimitives)
- het pong balletje (of: de omranding ervan) is antialiased (ook dankzij sdl_gfxPrimitives)
- de rechtse paddle wordt bestuurd door de computer (zoek maar naar de functie AI_Move())
- geluidspanning dankzij sdl_mixer om geluidseffecten te positioneren

Het is wederom niet echt bedoeld om een volledig afgewerkt spel te hebben, ik heb dit maar alles bij elkaar genomen in een paar uurtjes in elkaar geflanst, maar  ik ben toch wel redelijk tevreden over het resultaat. De code is ook veel netter dan het vorige programma (hoewel het bij een serieus programma nog netter zou moeten, maar voor dit kleine programma is het goed genoeg)

Ik ga niet meer aan dit programma werken (hoewel er nog veel verbeteringen te bedenken zijn) maar ik ga me bezighouden met andere dingen schrijven :) Dit Pong spelletje was alvast een leuke testcase.

Citaat van: NoiK
hoe deed jij ut gcc installen dan?
ik heb op je andere topic geantwoord
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Offline Math.

  • Lid
    • http://www.open-design.nl/
  • Steunpunt: Nee
Simple DirectMedia Layer
« Reactie #8 Gepost op: 2007/07/11, 19:38:16 »
Echt helemaal te gek profoX! Goed bezig! :D :D :D

www.Open-design.nl - Open your mind. B creative with OSS.

Offline Soul-Sing

  • Lid
  • Steunpunt: Nee
Simple DirectMedia Layer
« Reactie #9 Gepost op: 2007/07/11, 19:55:56 »
Citaat van: Math.
Echt helemaal te gek profoX! Goed bezig! :D :D :D
idd gaaf. :D

schoappied

  • Gast
Simple DirectMedia Layer
« Reactie #10 Gepost op: 2007/07/12, 12:05:09 »
Goed bezig ProfoX!
Ik weet helemaal niks van programeren, maar ik wilde ooit nog eens een simpele animatie maken van drie poppetjes die een bal overspelen en na verloop van tijd krijgt een persoon geen bal meer... die wordt uitgesloten...
Ja, het is een triest verhaal, maar als mensen zich identificeren met dat poppetje en een tijdje 'meespelen' met het spel, weet iedereen weer hoe zoiets voelt....
Kan ik zoiets maken (wellicht een project voor in de toekomst)? Of kan iemand anders dat eenvoudig doen?

Offline muksie

  • Lid
  • Steunpunt: Nee
Simple DirectMedia Layer
« Reactie #11 Gepost op: 2007/07/12, 12:17:13 »
Als het je echt interresseert en het leuk lijkt om te programmeren, en je hebt voldoende vrije tijd, dan kun je natuurlijk leren programmeren. Er zijn voldoende tutorials op internet te vinden, en je kunt natuurlijk ook gewoon een goed boek kopen. Lijkt programmeren je doodsaai, begin er dan ook niet aan.

In dat geval kun je misschien wel eens kijken naar Flash, maar daar heb ik 0.0% ervaring mee, en heb dan ook geen enkel idee hoe moeilijk of makkelijk het daarin te maken is.

Maar moet het gewoon een eenvoudige animatie worden,  dan kan het misschien ook wel met een gewoon gifje. Kijk eens hier: http://www.willempen.org/gimp/animated-gif/

Offline Gijsbert

  • Lid
  • Steunpunt: Ja
Simple DirectMedia Layer
« Reactie #12 Gepost op: 2007/07/12, 18:28:39 »
@profoX, ik heb libsdl1.2-dev en KDevelop geïnstalleerd, volgens de door jouw gegeven link http://lazyfoo.net/SDL_tutorials/index.php.                                                     Ik heb nu diverse KDevelop's staan maar bij geen een staat SDL.
Doe ik iets verkeerd?

Met vriendelijke groet,

Gijs
In der Beschränkung zeigt sich der Meister.

Offline profoX

  • Lid
    • wesley
    • Lionslink
  • Steunpunt: Nee
Simple DirectMedia Layer
« Reactie #13 Gepost op: 2007/07/12, 18:45:34 »
Je moet de C/C++ versie van KDevelop starten en dan kan je bij nieuw project een SDL template kiezen.

edit: als je niet met C/C++ wil werken, kan je eventueel Pygame proberen, dat is een library voor Python gebouwd bovenop SDL
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Offline Gijsbert

  • Lid
  • Steunpunt: Ja
Simple DirectMedia Layer
« Reactie #14 Gepost op: 2007/07/12, 19:15:00 »
Bedankt profoX,ik keek naar een mapje i.p.v. naar een template, dom dom dom.
Het zal wel even duren voordat ik met C/C++ kan werken aangezien het programmeren een hele nieuwe wereld is voor mij, op html na.
Heb ik tenminste weer een nieuw tijdverdrijf.

Met vriendelijke groet,

Gijs
In der Beschränkung zeigt sich der Meister.

Offline profoX

  • Lid
    • wesley
    • Lionslink
  • Steunpunt: Nee
Simple DirectMedia Layer
« Reactie #15 Gepost op: 2007/07/12, 19:26:56 »
Citaat van: Gijsbert
Bedankt profoX,ik keek naar een mapje i.p.v. naar een template, dom dom dom.
Het zal wel even duren voordat ik met C/C++ kan werken aangezien het programmeren een hele nieuwe wereld is voor mij, op html na.
Heb ik tenminste weer een nieuw tijdverdrijf.

Met vriendelijke groet,

Gijs
Dan zou ik maar met pygame beginnen, die is volgens mij simpeler, omdat je dan volgens mij niet afhankelijk bent van rechtstreekse communicatie met geheugenadressen (pointers) :) (en dat is een moeilijk concept in het begin)

Wat je ook kiest: In ieder geval eerst een paar gewone basis C/C++ of Python boeken/tutorials doorlezen zal wel helpen
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)