   How to avoid windows?
  I am a fairly new programmer who is currently working on polishing up my understanding of the basics of making C++ console applications. I am interested in making 2D applications with decent sound, pixel by pixel 2D graphics, input from keys/mouse controllers, and file access. I am interested in getting some practice in the nuts and bolts of a "real" 2D game. I am well aware of how hard it is, and am not planning on making some mindblowing new app. Think tetris, pac-man, and maybe SMB if I get on a roll  I have some experiance from goofy languages (I.E. blitzbasic) as far as timing, and double buffering, input, main loop etc.Well, I am scouting ahead for what to step into once I am comfortable with C++. I have considered options such as SDL, DirectDraw, etc. I have very little interest in windows programming, and am primarily interested in drawing fullscreen applications with their own, custom GUI. Basically, what I want is a roadmap, I.E. what API to use, what compiler, etc.I am willing to work long and hard, and do NOT expect unrealisitc results. I will summarize what I want and don''t want.I want:* Ability to run on up to date WinXP Dx 9 machine* Fast 2D, probably 800x600 or 1024x768 32 BPP* Functional, but not necessarily fancy sound* Translucency/rotation would be nice* Basic input from keyboard/moust/usb gamepads* Ability to run as an actual EXE, with small DLLs being ok* File access* Reasonably compatible with Dev C++I do NOT want/need:* 3D* Cross platform compatability(yet)* network multiplayer* windows GUI/non fullscreenBasically all I am looking for is something that is fairly straightforward that I can simply use to produce gfx/sound/input etc with a good understanding of C++ and the Bloodshed Dev C++ compiler, and avoid the hassle of windows programming which from what I gather is mostly for applications anyhow. 
  you can use directx but no matter what you will still need some basic windows programming. ;  Dev C++ and SDL is an excellent way to go... A word of warning with regards to 2D graphics pixel by pixel however. Some modern graphics cards provide considerably less direct to pixel 2D functionality than used to be available... that is to say you are often working on a shadow surface, in system memory. This manifests itself in several ways... one of which being that you can get unfortunate performance issues. A 2D application on my 1ghz radeon 7500 laptop.. outperforms (by 2:1) the same application on a 3ghz GF4 ti4200. This is because of the cost involved in direct pixel manipulation. In fact, on the GF4 it was almost as fast to place the entire image on a texture, and render it on a quad (per frame) than to just draw the requried pixels (onto to off screen buffers) and blit them. There are HUGE advantages to making your 2D games take advantage of 3D hardware... not least of which being that rotation, scaling, and any other 2D affine transfrom you can think of become virtually free. In general, 2D games have "minimum" units you need to manipulate, and these are not usually pixels.. they tend to be objects.. or parts of objects, and if this is the case... then 3D is the way to go. My application absolutely required direct pixel manipulation, as it was a scientific visualisation... and function of this sort was key to its correct function. In any case... there are a lot of things you can do with 3D hardware to get interesting 2D effects. Render to texture for example can give some really interesting special effects.In short... SDL+OpenGL will give you everything you need... as well as network, 3D and cross platform capabilities.EDIT: note that SDL requires no knowledge of windows programming for any of it's functionality, as it is completely cross platform. SDL is distributed to users as a 250kish DLL (in otherwords... fairly light weight).   [edited by - dmounty on February 15, 2004 7:31:38 PM];  sdl + opengl is 2d/3dnetworkingkeyboard handlingfontsmouse inputmuch more    ;  just an addition TO GET SDL AND OTHER LIBS RUN THE DEV-CPP UPDATE UTILITY!    ;  i''m developing an SDL game with the ParaGUI lib as well and get it working nice on linux first, then give it out to a few other helpers who compile on Windows. It ports almost perfectly with only small differences. There have not been any cross-platform problems at all even though 99% of the development has been on linux, not Windows. So of course, if you use SDL, you need approximately zero Windows programming knowledge.use SDL and you''ll get cross-platform compatability for free, even though you said you were not looking for it right away.;  Thanks, you have all been helpful  One question however, how does one get started on SDL? I will make sure I have C++ burned into my brain before I start working with it, so that C++ itself doesnt get in the way. Any pet tutorials/books/guides that would be particularly suited to a windows Dev C++ user of SDL? ;  << I have very little interest in windows programming, and am primarily interested in drawing fullscreen applications with their own >>Don''t be afraid of Win32. Once you get your WinMain and WinProc set you don''t have to touch it. You can just copy/paste. I basically copied mine from Lamothe''s Tricks, made like 2 cosmetic changes, and have used it since. You don''t need in depth knowledge of Win32 for a 2D game, just enough to set up your window and get messages (WinMain, WinProc). If you want your game to run on 90% of the PCs in the world....Did the Breakout, Asteroids, Pacman in GDI route, working on Super Mario side-scroll in DirectDraw. Then I''ll be done with 2D (and 1990s technology), and its 3D with OpenGL, and DX 9, 10, 11, 12....  For sound try FMOD (plays WAV and MIDI and is so easy to set up), dabbled in DirectSound but that plays WAV only.VazGames.com  Phil P ;  SDL TUTORIAL:http://cone3d.gamedev.net/cgi-bin/index.pl?page=tutorials/gfxsdl/indexthat should get you going real fast. Also remember that SDL is just 2D graphics. If you want sound and networking and a few other things, you''ll have to grab SDL_net, SDL_image, and SDL_mixer for added functionality. 