Simple Directmedia Layer (SDL)

Total Page:16

File Type:pdf, Size:1020Kb

Simple Directmedia Layer (SDL) Simple DirectMedia Layer (SDL) Fabian Fagerholm Ohjelmistotuotanto ja tietokonepelit- seminaari Kevät 2006 Tietojenkäsitteltieteen laitos Helsingin yliopisto Sisältö Johdanto Mikä on SDL? Historia hyvin lyhesti Open Source API: katsaus SDL:n toimintoihin Arkkitehtuuri Liitokset korkeamman tason kieliin Case Johdanto: Mikä on SDL? SDL on matalan tason multimediakirjasto. Äänentoisto Näppäimistön lukeminen Peliohjaimen lukeminen Grafiikan tuottaminen (2D) OpenGL-yhteensopiva (3D) Järjestelmärutiinit (rinnakkaisohjelmointi, tapahtumahallinta, jne.) SDL on siirrettävä, eli toimii monella laitteistoalustalla. Mahdollistaa pelinteon usealle alustalle samanaikaisesti. Mahdollistaa pelin siirtämisen uudelle alustalle myöhemmin. Toimii yli 10 käyttöjärjestelmässä ja yli 10 laitteistoarkkitehtuurissa. (Onko tarpeellista? Toisaalta, haittaako?) Johdanto: Historia hyvin lyhyesti SDL:n ensimmäisen version kehitti Sam Lantinga, silloin Loki Softwaren työntekijä. Loki teki Linux-versioita Windows- ja Mac-peleistä (Sim City 3000 Unlimited, Quake III Arena, ym.). Peleissä käytettiin mm. SDL:ää. Yrityksen toiminta loppui vuoden 2002 alussa. Sam Lantinga edelleen SDL:n pääkehittäjä, nykyään töissä Blizzard Entertainmentilla (World of Warcraft, Diablo II, ym.). SDL on kirjoitettu C:ssä. Hyvin siirrettävä ja tehokas. Toimii suoraan C++:ssa. Helppo tehdä liitoksia muihin kieliin. Johdanto: Open Source SDL on Open Source -ohjelmisto (LGPL-lisenssi) Oman pelin lähdekoodin julkaiseminen ei ole pakollista tietyin ehdoin. Tavoite on pitää SDL vapaasti saatavilla. Kehitys eroaa suljetun ohjelmiston kehityksestä. Tämä vaatii tietämystä avoimen kehitysmallin käytännöistä. Kehitystä voi seurata reaaliajassa SDL-projektin koodivaraston kautta. (http://www.libsdl.org/cgi/cvsweb.cgi) Taustaorganisaation puute saattaa johtaa ajatukseen, että projektiin ei voi luottaa. Lisenssi kuitenkin mahdollistaa jopa oman version kehittämistä. Vapaa saatavuus ja avoin kehitysmalli kiinnostaa monia yrityksiä, mm. Nokia kehittää ja julkaisee Open Source-ohjelmistoja. Ennen kuin käytät: selvitä itsellesi mistä on kyse! Free Software / Open Source on poikkitieteellinen ilmiö, josta on paljon ristiriitaista tietoa. Sisältö Johdanto API: katsaus SDL:n toimintoihin Yleiset toiminnot Grafiikka Tapahtumien hallinta Ääni Rinnakkaisohjelmointi OpenGL Arkkitehtuuri Liitokset korkeamman tason kieliin Case API: Yleiset toiminnot SDL:n API koostuu noin 200 funktiosta ja joukosta struct- rakenteita. Alustus: SDL_Init Alustaa SDL:n ja sen alijärjestelmiä (grafiikka, ääni, jne) Ei tarvitse alustaa kaikkia: · SDL_Init(SDL_INIT_AUDIO | SDL_INIT_VIDEO); Jaettujen kirjastojen lataaminen: SDL_LoadObject(”libGL.so”); Mahdollistaa laajennosten lataamisen ajonaikaisesti. Resurssien vapauttaminen: SDL_Quit(); Sinun on kuitenkin vapautettava kaikki itse varaamasi resurssit. API: Grafiikka Suurin osa APIsta liittyy grafiikkaan. 3D-grafiikka on erikseen, nämä ovat 2D-piirtoalueiden toimintoja. Näytön ja näyttöohjaimen ominaisuudet, näyttötilan asettaminen Piirtoalueen osittainen päivitys; tuplapuskuroinnin puskurivaihto Värien hallinta ja eri värijärjestelmien muunnokset Läpinäkyvyyden säätely avainvärillä tai alpha-kanavalla Kuvalohko-operaatiot (BLIT, Block Image Transfer) Hiiriosoittimen operaatiot OpenGL-toiminnot Videokuvan overlay-toiminnot API: Grafiikka Esimerkki SDL_Surface *image = IMG_Load("SDL_logo.png"); typedef struct SDL_Surface { Uint32 flags; /* surface flags */ SDL_PixelFormat *format; /* pixel format (bits per pixel, etc.) */ int w, h; /* width, height */ Uint16 pitch; /* length of surface scanline in bytes */ void *pixels; /* pointer to pixel data */ SDL_Rect clip_rect; /* surface clipping rectangle */ int refcount; /* used when freeing surface */ /* This structure also contains private fields not shown here */ } SDL_Surface; API: Tapahtumien hallinta Tapahtumat ovat käyttäjän tai pelin ulkopuolella olevan järjestelmän aiheuttamia, esim. Näppäimistön napin painaminen Hiiren klikkaus tai liikkuminen Peliohjaimen käyttö Peli-ikkunan koon muutos Tapahtumat tallennetaan jonoon. Peli prosessoi jonon säännöllisesti tai jää odottamaan tapahtumien saapumista. Prosessoinnissa voi filtteröidä tapahtumia. Myös omia tapahtumia mahdollista määritellä: SDL_UserEvent Tarjoaa rungon esim. AI-pelaajan liikkeiden välittämiseen tai testausohjelman synteettisille tapahtumille. Käytännössä ei sovellu pelilogiikalle? API: Ääni SDL:n äänitoiminnot ovat melko vaatimattomat Äänilaitteiston alustus, resurssien vapautus Äänidatan muunnos, esim. taajuuden ja näytteiden määrän (samples) muuttaminen laitteistolle sopivaksi Yksinkertainen miksaus Toistuva käyttö aiheuttaa säröä ja leikkausta, koska akkumulaattori puuttuu. 3D-pelissä halutaan usein sijoittaa äänet pelimaailmaan, tällöin käytettävä siihen soveltuvaa kirjastoa, esim. OpenAL. Äänen suunnan simulointi Voimakkuus riippuen etäisyydestä Liikkeen vaikutus ääneen (Doppler-vaikutus) API: Rinnakkaisohjelmointi Rinnakkaisohjelmointi on työlästä tehdä siirrettäväksi. SDL tarjoaa yleisimmät rinnakkaisohjelmoinnin työkalut: Säikeet Mutex-rakenteet Semaforit Ehtomuuttujat Esim. Linuxissa toteutettu POSIX-säikeillä, jolloin säikeet luodaan käyttöjärjestelmän toimesta ja pystyvät hyödyntämään SMP-ominaisuuksia. Muissa ympäristöissä mahdollisesti SDL:n sisäinen toteutus (prosessin sisäiset säikeet). Lisätietoja rinnakkaisohjelmoinnin kirjallisuudesta tai esim. TKTL:n kurssilla Rinnakkaisohjelmointi. API: OpenGL SDL ei tarjoa itse 3D-ominaisuuksia Kiihdytys laitteistoriippuvainen, kehitys hyvin nopea 3D:tä voi ohjelmoida itse OpenGL:n avulla SDL voi alustaa näytön OpenGL-käyttöä varten SDL_GL_LoadLibrary, SDL_GL_SetAttribute, ... Sisältö Johdanto API: katsaus SDL:n toimintoihin Arkkitehtuuri Modulaarisuus SDL osana pelimoottoria Liitokset korkeamman tason kieliin Case Arkkitehtuuri: modulaarisuus SDL on modulaarinen Rajapinta määrittelee tietorakenteita, joihin operaatiot kohdistuvat Moduuli voi tarjota rajapintojen luonti- tai muokkausoperaatioita Modulaarisuus on sopimuksellista – C tai C++ eivät estä käsittelemästä tietorakenteita väärällä tavalla Standardikirjasto laajentaa toimintoja: SDL_Image, SDL_mixer, SDL_net, SDL_rtf, SDL_ttf Esimerkki: kuvien tiedostomuotojen tuki SDL_Image-modulissa Tukee mm. GIF, JPEG, PNG -muotoja Palauttaa kaikista SDL_Surface-rakenteen SDL_Surface-rakenne on 2D-grafiikkaoperaatioiden perusrakenne Arkkitehtuuri: SDL osana pelimoottoria Ohjelmistotuotannon kannalta koodin uudelleenkäyttö on olennaista Pelimoottori eristää uudelleenkäytettävät osat pelistä Grafiikkamoottori (2D ja/tai 3D) Äänimoottori Pelimaailman fysiikka Yleinen logiikka, esim. lautapelilogiikka, ensimmäisen persoonan näkökulmasta kuvattu käytäväjuoksupelilogiikka, ... Jne. SDL ei ole pelimoottori, mutta se voi olla osa sellaista Loki Softwaren pelit toimi näin Arkkitehtuuri: SDL osana pelimoottoria Open Source -pelimoottorin hahmotelma OpenGL: piilotetaan osittain; hahmojen lataaminen tiedostosta, ym. OpenAL: hahmo-olioista omat äänilähteet ODE: Open Dynamics Engine, pelimaailman fysiikan mallinnus SDL: kytkee palaset yhteen, käyttöjärjestelmätoiminnot, siirrettävyys Sisältö Johdanto API: katsaus SDL:n toimintoihin Arkkitehtuuri Liitokset korkeamman tason kieliin Yleistä Python / PyGame Case Liitokset: yleistä Korkeamman tason kielillä kehitys nopeutuu Muistinhallintaa ei tarvitse hoitaa itse Prototyypit voidaan tehdä hyvin nopeasti Pelimoottori voi sisältää kaikki vaativat toiminnot, pelilogiikka ohjelmoidaan korkean tason kielellä Liitokset tarjoavat SDL:n toimintoja korkeamman tason kielen toimintoina Usein liitokset muodostavat hyvin ohuen kerroksen, eli samat funktiot ovat saatavilla, mutta joskus myös korkeamman tason toimintoja on sisällytetty SDL:n liitoksia on 20 kielelle, mm. C#, Java, Lua, Perl, PHP, Python, Ruby ja Smalltalk Liitokset: Python / PyGame Esimerkkinä PyGame Python-kielelle Tärkeä ja kiinnostava; Python toimii Symbian Series 60-puhelimissa sekä Nokian 770-laitteessa PyGame tarjoaa sekä SDL:n matalan tason operaatioita että korkeamman tason omia operaatioitaan Sprite-luokka: 2D-pelin hahmo Group-luokka: sisältää monta Sprite-oliota Surfarray: pikselitason grafiikkaoperaatiot, esim. erikoistehosteisiin Perinteisen pelisilmukan sijaan PyGame suosittelee Model-View- Controller-suunnittelumalla Jokaiselle oma säie Projektitason etuja, kun logiikka ja grafiikka ovat erillään Verkkopeleissä hajautettuja tietorakenteita on helpompi ohjelmoida erikseen Testaus helpottuu: yksikkötestien kirjoittaminen PyUnitilla Sisältö Johdanto API: katsaus SDL:n toimintoihin Arkkitehtuuri Liitokset korkeamman tason kieliin Case Battle for Wesnoth-seikkailupeli Case: Battle for Wesnoth Seikkailuaihenen vuorolautapeli Open Source -projekti, alkoi 2003 Käännöksiä yli 20 kielelle Siirrettävä: Linux, Windows, Mac OS X, BeOS, Solaris, FreeBSD, OpenBSD, NetBSD Kirjoitettu C++:ssa Yli 60000 riviä koodia 2 000 000 USD (COCOMO-Basic) Case: Battle for Wesnoth SDL:n toiminnoista rakennettu oliomalli C++:lla Esimerkki: threading::thread Käyttää SDL:n säietoimintoja ... thread::thread(int (*f)(void*), void* data) : thread_(SDL_CreateThread(f,data)) {} ... void thread::join() { if(thread_ != NULL) { SDL_WaitThread(thread_,NULL); thread_ = NULL; } } ... Yhteenveto SDL on multimediakirjasto matalan tason operaatioita siirrettävyys keskeistä vapaasti saatavilla, avoin kehitysmalli API on yksinkertainen, ei korkean tason toimintoja 3D-grafiikkaa varten OpenGL Modulaarinen arkkitehtuuri sopimuspohjainen sopii osaksi pelimoottoria Runsaasti liitoksia korkean tason kieliin Oikeasti käytössä vaatii paljon työtä matalan tasonsa johdosta Lähteet Loki Software Inc. ja John R. Hall: Programming Linux Games. No Starch Press, Inc., San Fransisco, CA, USA, 2001. Erik Yuzwa: Game Programming in C++: start to finish. Charles River Media, Inc., Massachussets, USA, 2006. Simple DirectMedia Layer Project, Simple DirectMedia Layer: http://www.libsdl.org/ OpenAL Project, OpenAL: http://www.openal.org/ SDL Logo by Arne Claus Battle for Wesnoth: http://www.wesnoth.org/.
Recommended publications
  • GNU/Linux AI & Alife HOWTO
    GNU/Linux AI & Alife HOWTO GNU/Linux AI & Alife HOWTO Table of Contents GNU/Linux AI & Alife HOWTO......................................................................................................................1 by John Eikenberry..................................................................................................................................1 1. Introduction..........................................................................................................................................1 2. Symbolic Systems (GOFAI)................................................................................................................1 3. Connectionism.....................................................................................................................................1 4. Evolutionary Computing......................................................................................................................1 5. Alife & Complex Systems...................................................................................................................1 6. Agents & Robotics...............................................................................................................................1 7. Statistical & Machine Learning...........................................................................................................2 8. Missing & Dead...................................................................................................................................2 1. Introduction.........................................................................................................................................2
    [Show full text]
  • World of Warcraft Online Manual
    Game Experience May Change During Online Play WOWz 9/11/04 4:02 PM Page 2 Copyright ©2004 by Blizzard Entertainment. All rights reserved. The use of this software product is subject to the terms of the enclosed End User License Agreement. You must accept the End User License Agreement before you can use the product. Use of World of Warcraft, is subject to your acceptance of the World of Warcraft® Terms of Use Agreement. World of Warcraft, Warcraft and Blizzard Entertainment are trademarks or registered trademarks of Blizzard Entertainment in the U.S. and/or other countries.Windows and DirectX are trademarks or registered trademarks of Microsoft Corporation in the U.S. and/or other countries. Pentium is a registered trademark of Intel Corporation. Power Macintosh is a registered trademark of Apple Computer, Inc. Dolby and the double-D symbol are trademarks of Dolby Laboratory. Monotype is a trademark of Agfa Monotype Limited registered in the U.S. Patent and Trademark ® Office and certain other jurisdictions. Arial is a trademark of The Monotype Corporation registered in the U.S. Patent and Trademark Office and certain other jurisdictions. ITC Friz Quadrata is a trademark of The International Typeface Corporation which may be registered in certain jurisdictions. All other trademarks are the property of their respective owners. Uses high-quality DivX® Video. DivX® and the DivX® Video logo are trademarks of DivXNetworks, Inc. and are used under license. All rights reserved. AMD, the AMD logo, and combinations thereof are trademarks of Advanced Micro Devices, Inc All ATI product and product feature names and logos, including ATI, the ATI Logo, and RADEON are trademarks and / or registered trademarks of ATI Technologies Inc.
    [Show full text]
  • IT Acronyms.Docx
    List of computing and IT abbreviations /.—Slashdot 1GL—First-Generation Programming Language 1NF—First Normal Form 10B2—10BASE-2 10B5—10BASE-5 10B-F—10BASE-F 10B-FB—10BASE-FB 10B-FL—10BASE-FL 10B-FP—10BASE-FP 10B-T—10BASE-T 100B-FX—100BASE-FX 100B-T—100BASE-T 100B-TX—100BASE-TX 100BVG—100BASE-VG 286—Intel 80286 processor 2B1Q—2 Binary 1 Quaternary 2GL—Second-Generation Programming Language 2NF—Second Normal Form 3GL—Third-Generation Programming Language 3NF—Third Normal Form 386—Intel 80386 processor 1 486—Intel 80486 processor 4B5BLF—4 Byte 5 Byte Local Fiber 4GL—Fourth-Generation Programming Language 4NF—Fourth Normal Form 5GL—Fifth-Generation Programming Language 5NF—Fifth Normal Form 6NF—Sixth Normal Form 8B10BLF—8 Byte 10 Byte Local Fiber A AAT—Average Access Time AA—Anti-Aliasing AAA—Authentication Authorization, Accounting AABB—Axis Aligned Bounding Box AAC—Advanced Audio Coding AAL—ATM Adaptation Layer AALC—ATM Adaptation Layer Connection AARP—AppleTalk Address Resolution Protocol ABCL—Actor-Based Concurrent Language ABI—Application Binary Interface ABM—Asynchronous Balanced Mode ABR—Area Border Router ABR—Auto Baud-Rate detection ABR—Available Bitrate 2 ABR—Average Bitrate AC—Acoustic Coupler AC—Alternating Current ACD—Automatic Call Distributor ACE—Advanced Computing Environment ACF NCP—Advanced Communications Function—Network Control Program ACID—Atomicity Consistency Isolation Durability ACK—ACKnowledgement ACK—Amsterdam Compiler Kit ACL—Access Control List ACL—Active Current
    [Show full text]
  • Copyrighted Material
    Index abld build 36 AVRecorder 270 with C 40 abld freeze 226 IDE 32 abort() 74, 400, 402 MFC 214 abstract base class 46 Base Class Library (BCL) Mutex 388–391 active objects 31, 94–99, 237 C classes 53, 79, 85, 87 381 battery 10, 14, 43 C Wrappers 339–340 Active Template Library Bazaar 392–393 CActive 95, 97 (ATL) 134 BCL. See Base Class Library CActiveScheduler Adapter pattern 384 Binary Runtime Environment Add() 95–96 Alerts API 166 for Wireless Start() 141 AllFiles 130, 349, 355 (BREW) 253–254 CAknAppUi 155 Alloc() 64 Blackberry 11, 17–18 calendar 186, 251 ALLOC panic 45–46, 399 bld.inf 35, 36, 38, callbacks 147, 324, 381 AllocL() 64 115–116, 186, camera 165, 185, 253 All-Tcb 117 211, 292, 293, 316 Cancel() 98 Android 11, 12, 17–18, bldmake 36, 211 capabilities 228, 348–355 244–253, Bluetooth 127, 138 Android 369–371 369–371 Boost 107, 197 trusted applications ANSI C++ standardCOPYRIGHTED 386 BREW. See Binary MATERIAL Runtime 362–363 APIs 68–71, 103–131 Environment for untrusted applications applications, portable Wireless 363–364 375–396 CAPABILITY 37, 355 ARM RealView Compilation capitalization guidelines Tools (RVCT) 34, C 21, 28, 40, 103–131, 50–51 112 214 Carbide.c++ 32, 38, 72, ATL See Active Template C++ 21, 28, 31, 50, 59, 147, 211, 214, Library 61–66, 103–131, 368–369 auto_ptr 85, 143, 144 CArray 58 391–392 abstract base class 46 CArrayFixFlat 58 412 INDEX CArrayFixSeg 58 Common Language Runtime DLL. See dynamic link CArrayVarSeg 58 (CLR) 236 library CArrayXSeg 58 compilers 34, 39–40, Document Object Model catch 72 318–322 (DOM) 184 CBase 53, 54, 82, Component Object Model DOM.
    [Show full text]
  • Foreign Library Interface by Daniel Adler Dia Applications That Can Run on a Multitude of Plat- Forms
    30 CONTRIBUTED RESEARCH ARTICLES Foreign Library Interface by Daniel Adler dia applications that can run on a multitude of plat- forms. Abstract We present an improved Foreign Function Interface (FFI) for R to call arbitary na- tive functions without the need for C wrapper Foreign function interfaces code. Further we discuss a dynamic linkage framework for binding standard C libraries to FFIs provide the backbone of a language to inter- R across platforms using a universal type infor- face with foreign code. Depending on the design of mation format. The package rdyncall comprises this service, it can largely unburden developers from the framework and an initial repository of cross- writing additional wrapper code. In this section, we platform bindings for standard libraries such as compare the built-in R FFI with that provided by (legacy and modern) OpenGL, the family of SDL rdyncall. We use a simple example that sketches the libraries and Expat. The package enables system- different work flow paths for making an R binding to level programming using the R language; sam- a function from a foreign C library. ple applications are given in the article. We out- line the underlying automation tool-chain that extracts cross-platform bindings from C headers, FFI of base R making the repository extendable and open for Suppose that we wish to invoke the C function sqrt library developers. of the Standard C Math library. The function is de- clared as follows in C: Introduction double sqrt(double x); We present an improved Foreign Function Interface The .C function from the base R FFI offers a call (FFI) for R that significantly reduces the amount of gate to C code with very strict conversion rules, and C wrapper code needed to interface with C.
    [Show full text]
  • The Linux Gamers' HOWTO
    The Linux Gamers’ HOWTO Peter Jay Salzman Frédéric Delanoy Copyright © 2001, 2002 Peter Jay Salzman Copyright © 2003, 2004 Peter Jay SalzmanFrédéric Delanoy 2004-11-13 v.1.0.6 Abstract The same questions get asked repeatedly on Linux related mailing lists and news groups. Many of them arise because people don’t know as much as they should about how things "work" on Linux, at least, as far as games go. Gaming can be a tough pursuit; it requires knowledge from an incredibly vast range of topics from compilers to libraries to system administration to networking to XFree86 administration ... you get the picture. Every aspect of your computer plays a role in gaming. It’s a demanding topic, but this fact is shadowed by the primary goal of gaming: to have fun and blow off some steam. This document is a stepping stone to get the most common problems resolved and to give people the knowledge to begin thinking intelligently about what is going on with their games. Just as with anything else on Linux, you need to know a little more about what’s going on behind the scenes with your system to be able to keep your games healthy or to diagnose and fix them when they’re not. 1. Administra If you have ideas, corrections or questions relating to this HOWTO, please email me. By receiving feedback on this howto (even if I don’t have the time to answer), you make me feel like I’m doing something useful. In turn, it motivates me to write more and add to this document.
    [Show full text]
  • Wotlk EU Manual
    Getting Started PC System Requirements OS: Minimum: Windows® XP/Windows Vista®/Windows® 7 (Latest Service Packs) Recommended: 64-bit Windows Vista®/Windows® 7 Processor: Minimum: Intel Pentium® 4 1.3 GHZ or AMD Athlon™ XP 1500+ Recommended: Dual core processor Memory: Minimum: 1 GB RAM Recommended: 2 GB RAM Video: Minimum: NVIDIA® GeForce® FX or ATI Radeon™ 9500 video card or better Recommended: 256 MB NVIDIA® GeForce® 8600 or ATI Radeon™ HD 2600 or better Installation Instructions Place Wrath of the Lich King DVD into your DVD-ROM drive. If your computer has autoplay enabled, an installation window will automatically pop up on your Windows desktop. Click the Install Wrath of the Lich King button and Enter the Next Chapter to follow the onscreen instructions to install Wrath of the Lich King to your hard drive. If the installation window ® does not appear, open the My Computer icon on your desktop and double-click the drive letter corresponding to your DVD-ROM drive to open it. Double-click the Install.exe icon in the DVD-ROM contents and follow the onscreen World of Warcraft ! instructions to install Wrath of the Lich King. Installing DirectX® PC Users Only: You will need to install DirectX 9.0c in order to properly run Wrath of the Lich King. During installation you will be prompted to install DirectX if you do not already have the most up-to-date version installed on your computer Mac System Requirements OS: Minimum: Mac® OS X 10.5.8, 10.6.4 or newer Recommended: Mac® OS X 10.6.4 or newer Processor: Minimum: Intel® Processor Recommended: Intel® Core™ 2 Duo processor Memory: Minimum: 2 GB RAM Recommended: 4 GB RAM Video: Recommended: NVIDIA® GeForce® 9600M GT or ATI Radeon™ HD 4670 or better Installation Instructions Place the Wrath of the Lich King DVD in your DVD-ROM drive.
    [Show full text]
  • Xildoom Final Report
    XilDoom Final Report 18545 Fall 2010 Robert Waaser Shupeng Sun Soo Hwan Kim Summary For our project, we ported the classic 1993 first-person shooter Doom to a Xilinx LX110T Field Programmable Gate Array (FPGA). We chose to use a source port known as Chocolate Doom which uses the Simple DirectMedia Layer (SDL) library to achieve cross-plaorm compability. AXer building a custom computer system on the FPGA that was capable of running the game, we wrote custom drivers for SDL that allowed Chocolate Doom to run on our hardware. The final result was a SystemAce file that could be used to configure an FPGA to run Doom on boot, complete with keyboard input and audio and video output. Networking was also implemented, but not tested before the public demo. Our Project Idea For our capstone we were required to implement a game, a game console, or one of a number of research projects. For the game route, the game had to be complete with audio and video output, some sort of user input, mulWple players, and a way to keep score. Furthermore the game could not be of our own creaon, as the course was not meant to be a course in game programming but rather a course in systems-level design. We took a look at capstone projects from the past three years and noWced that projects that ported soXware games such as Quake and Descent seemed to have a relavely high rate of success. Typically these projects focused less on designing hardware and code from scratch and more on combining and modifying exisWng code and libraries to funcWon in an embedded environment.
    [Show full text]
  • Your Paper's Title Starts Here
    Advances in Computer Science Research, volume 71 4th International Conference on Machinery, Materials and Information Technology Applications (ICMMITA 2016) Design of H.265 Streaming Media Player System Based on QT * Yu-Hua Wu1, a, Min Zhang1, b, Ting Yang1, c, Shi-Jun Lid, 1Jilin Agricultural University, Changchun 130118, Jilin, China [email protected], [email protected], [email protected], [email protected] *Shi-Jun LI Keywords: H.265, streaming media player, FFmpeg, codec. Abstract. With the continuous development of video services, video applications gradually in order to meet the high resolution, high frame rate, high compression development demand, put forward an H.265 streaming media player system based on QT. Under the QT environment, the use of FFmpeg codec library for video file processing, while the use of SDL multimedia displays library combined with multi-thread display video files. Experimental result shows that the player can play a clearly and smoothly H.265 video files, and can support 4K high-quality video playback. 1 Introduction Video data plays an important role in information interaction. According to the research, it is compared with other information, the human brain accepts 70% of the information is from the visual information[1]. However, with the development of mobile terminals and network technology, people's demand for video is growing, according to research shows that the video data will occupy 75% of the mobile data in 2020[2]. In order to provide users with high-quality video information, and reduce the video file data transmission bandwidth, the ITU-T VCEG put forward H.265 standard after H.264 standard.
    [Show full text]
  • Cross-Platform 1 Cross-Platform
    Cross-platform 1 Cross-platform In computing, cross-platform, or multi-platform, is an attribute conferred to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms.[1] [2] Cross-platform software may be divided into two types; one requires individual building or compilation for each platform that it supports, and the other one can be directly run on any platform without special preparation, e.g., software written in an interpreted language or pre-compiled portable bytecode for which the interpreters or run-time packages are common or standard components of all platforms. For example, a cross-platform application may run on Microsoft Windows on the x86 architecture, Linux on the x86 architecture and Mac OS X on either the PowerPC or x86 based Apple Macintosh systems. A cross-platform application may run on as many as all existing platforms, or on as few as two platforms. Platforms A platform is a combination of hardware and software used to run software applications. A platform can be described simply as an operating system or computer architecture, or it could be the combination of both. Probably the most familiar platform is Microsoft Windows running on the x86 architecture. Other well-known desktop computer platforms include Linux/Unix and Mac OS X (both of which are themselves cross-platform). There are, however, many devices such as cellular telephones that are also effectively computer platforms but less commonly thought about in that way. Application software can be written to depend on the features of a particular platform—either the hardware, operating system, or virtual machine it runs on.
    [Show full text]
  • GNU/Linux AI & Alife HOWTO
    GNU/Linux AI & Alife HOWTO GNU/Linux AI & Alife HOWTO Table of Contents GNU/Linux AI & Alife HOWTO......................................................................................................................1 by John Eikenberry..................................................................................................................................1 1. Introduction..........................................................................................................................................1 2. Traditional Artificial Intelligence........................................................................................................1 3. Connectionism.....................................................................................................................................1 4. Evolutionary Computing......................................................................................................................1 5. Alife & Complex Systems...................................................................................................................1 6. Agents & Robotics...............................................................................................................................1 7. Programming languages.......................................................................................................................2 8. Missing & Dead...................................................................................................................................2 1. Introduction.........................................................................................................................................2
    [Show full text]
  • An Infrastructure to Support Interoperability in Reverse Engineering Nicholas Kraft Clemson University, [email protected]
    Clemson University TigerPrints All Dissertations Dissertations 5-2007 An Infrastructure to Support Interoperability in Reverse Engineering Nicholas Kraft Clemson University, [email protected] Follow this and additional works at: https://tigerprints.clemson.edu/all_dissertations Part of the Computer Sciences Commons Recommended Citation Kraft, Nicholas, "An Infrastructure to Support Interoperability in Reverse Engineering" (2007). All Dissertations. 51. https://tigerprints.clemson.edu/all_dissertations/51 This Dissertation is brought to you for free and open access by the Dissertations at TigerPrints. It has been accepted for inclusion in All Dissertations by an authorized administrator of TigerPrints. For more information, please contact [email protected]. AN INFRASTRUCTURE TO SUPPORT INTEROPERABILITY IN REVERSE ENGINEERING A Dissertation Presented to the Graduate School of Clemson University In Partial Fulfillment of the Requirements for the Degree Doctor of Philosophy Computer Science by Nicholas A. Kraft May 2007 Accepted by: Dr. Brian A. Malloy, Committee Chair Dr. Harold C. Grossman Dr. James F. Power Dr. Roy P. Pargas ABSTRACT An infrastructure that supports interoperability among reverse engineering tools and other software tools is described. The three major components of the infrastruc- ture are: (1) a hierarchy of schemas for low- and middle-level program representation graphs, (2) g4re, a tool chain for reverse engineering C++ programs, and (3) a repos- itory of reverse engineering artifacts, including the previous two components, a test suite, and tools, GXL instances, and XSLT transformations for graphs at each level of the hierarchy. The results of two case studies that investigated the space and time costs incurred by the infrastructure are provided. The results of two empirical evaluations that were performed using the api module of g4re, and were focused on computation of object-oriented metrics and three-dimensional visualization of class template diagrams, respectively, are also provided.
    [Show full text]