Anyone here good at making graphics?

I'm making a 2D SDL game for fun (a first-person-shooter); but I've come to the realisation that I absolutely suck at media related stuff; e.g. music, graphics, etc. A friend of mine who messes around with Synths (and actually gets some pretty epic results) and a program called "Ableton" (or something) is making music for me so I can learn about SDL Mixer (his motivation is "to finally have an excuse to play around with 8-bit sampling".

Anyway as I say I'm awful at drawing; could someone draw me some generic sprites? I'd be really grateful. Obviously you'd be credited; not that I'm really likely to distribute it, but I like to give credit where it's due.

I can't actually get past the stage of animating stuff (not that I've gotten that far; I started my whole project again because something was annoying me) without a couple of sprites to move around...

Thanks :)

Oh and eventually I plan to switch it to OpenGL (3D); so that will be fun. It will probably run at like 5 FPS but whatever.
Last edited on
closed account (S6k9GNh0)
I used to be. Depends on what your wanting. Plus I don't have Photoshop anymore and I'm stuck with crappy ol' gimp.
Just very simple 2D sprites of people or whatever...

I'm not asking for so called "next-gen" graphics; I just can't draw. I'd very happily do everything myself... but I can't :P
The game is more for learning purposes correct? If so, when I get off of work I can link you to a ton of public domain graphics (npcs, tiles, etc...) that would help you out, if you choose that route. They may not be of superior quality, but they'll get you up and running quickly. Most of them also provide animation if you choose to use it.

In regards to SDL_Mixer. Make sure you pick up the newest release. Minor fixes, BUT the addition of Mix_Init()/Mix_Quit() is of value.

http://www.libsdl.org/projects/SDL_mixer/

* Added Mix_Init()/Mix_Quit() to prevent constantly loading and unloading DLLs
* Check for fork/vfork on any platform, don't just assume it on UNIX
* Fixed export of Mix_GetNumChunkDecoders() and Mix_GetNumMusicDecoders()
* Use newer MIDI API on Mac OS X 10.5+
The game is more for learning purposes correct? If so, when I get off of work I can link you to a ton of public domain graphics (npcs, tiles, etc...) that would help you out, if you choose that route.

That will be perfect :)

In regards to SDL_Mixer. Make sure you pick up the newest release. Minor fixes, BUT the addition of Mix_Init()/Mix_Quit() is of value.

I have the latest version of Mixer; unless this version was released yesterday :)

Thank you alot!

And yes, it is mostly for learning purposes; but also for fun. Oh, and something of a challenge because I really have to think about how I'm going to implement the crosshair. I really don't want to just have a little crosshair you move around with the cursor (although that may do for a while); instead, I'd love to have the crosshair stay dead-center and move the screen around instead...
That's probably sounding quite... unrealistic though.
Last edited on
I have the latest version of Mixer; unless this version was released yesterday :)


Funny enough it was released yesterday lol. Version 1.2.10.
I must have just caught it:
$ sudo apt-get install libsdl-mixer1.2
Reading package lists... Done
Building dependency tree
Reading state information... Done
libsdl-mixer1.2 is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.


Just to quickly add; as I often tend to go a bit wild with comments (either having too many or none at all); could someone say whether they think that my commenting gets a little redundant? I'm not sure; I just wrote everything down that came into my head:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#ifndef _FPS_H_
#define _FPS_H_

#include <iostream> /* I use std::cerr in my die() function; and I like std::strings */
#include <fstream>  /* For extensibility; I like to use a config file so users can
                     * change things. I like programs that are configurable, and
                     * I like to make programs that are configurable.
                     */
#include <vector>    /* For the surface_stack vector (see below)  */
/* The rest of this stuff is SDL and some SDL extension libraries: */
#include <SDL/SDL.h>
#include <SDL/SDL_mixer.h>
#include <SDL/SDL_image.h>
#include <SDL/SDL_ttf.h>

#define __init 

/* OH NO GLOBALS ARE EVIL */
static std::vector <SDL_Surface*> surface_stack; /* Keep track of allocated
                                                  * surfaces; as the name may
                                                  * suggest; this is a LIFO stack
                                                  */
/* Config file stuff: */
static std::string fontfile;    /* Load this font to print text with */
static std::string imagefolder; /* Search this folder for images */
static bool fullscreen; /* Should the screen go fullscreen? */
static bool doublebuf;  /* Should we double-buffer the screen? */
static size_t host_w;   /* Desktop width */
static size_t host_h;   /* Desktop height */

/* Easy way to distinguis between file formats and how to load them
 * (e.g. should I use SDL_LoadBMP? No, the format says PNG, etc.)
 */
enum img_formats {
    PNG,
    GIF,
    BMP,
    JPG
};

class video {
    public:
        size_t height; /* Height of our screen */
        size_t width; /* Width of our screen */
        int color_depth; /* Colour depth (bits per pixel) */
    public:
};

class audio {
    public: /* Even I, not being a "sound engineer" of any kind, can understand these: */
        int sampleRate; /* The rate (KHz) at which the sound is "sampled". Higher == better quality */
        Uint16 sampleFormat; /* Format (8-/16-/32-bit */
        int nChannels; /* Mono-/Stereo sound */
        int nBuffers;  /* Buffer the sound so it isn't just a raw stream.
                        * Unbuffered streams are retarded. */
};

/* Functions below are organised by file. */

/* Initialize SDL and the extension libraries; generally sets everything up for us
 * and returns a pointer to our main surface; generically named screen
 */
SDL_Surface* __init init(void);
/* Although it is declared as __init (which is just a blank macro); I like to
 * declare it with init because:
  * 1. It's in init.cpp
  * 2. It didn't seem to fit anything else
  * 3. The name seemed to fit.
 * It is declared with __init but really it does the opposite -- frees surfaces,
 * exits SDL and then returns to main, which can thereafter return a number to the OS or whatever.
 */
void __init end(void);

/* Pretty self explanatory. Entry point. I heard the whole CLI args stuff was
 * the only way to make the SDL program work properly; and while I have never
 * experienced it's failure without; I like to err on the safe side.
 */
int main(int, char**);
void die(std::string); /* Like the PHP die -- print an error message (but with SDL_GetError()
                        * to stderr and exit with a status of 1 (failure, normally) */

/* Cleans up allocated surfaces; see std::vector above */
void cleanup(void);

/* Very simple -- place an image on the screen. The two int args refer to the x
 * and y pos to blit them to. Remember that we're going down from the top-left;
 * not at all like you're typical graph.
 */
void place_image(SDL_Surface*, SDL_Surface*, int, int);

#endif 


Oh and excuse "fps.h". I haven't got a name yet because I like to leave that until last; otherwise you get stuck up with trying to stick to a name halfway through and end up wasting time. I have a loose idea that the game will be based around space (perhaps flying space ships to kill aliens; or maybe a first-person version of Asteroids (more likely, really). Now you ARE the triangle!) and that is it.
Last edited on
@chrisname Sorry for the delay... I got caught up last night on my own stupidity... I spent 3 hours trying to figure out why my stupid engine wouldn't launch, the screen just flickered and died. So I figure something must be wrong with my subsystem startup... nope... the entire damn time I forgot to call my game.run() function to actually start the engine!!!! Anyway here is a link to a bunch of 2d and 3d sprites: http://reinerstileset.4players.de/englisch.html that should get you going :)
@Return 0
Thanks! That's excellent. I can't access them right now (school has blocked the website); but I'll have a look later on.

Return 0 wrote:
I spent 3 hours trying to figure out why my stupid engine wouldn't launch, the screen just flickered and died. So I figure something must be wrong with my subsystem startup... nope... the entire damn time I forgot to call my game.run() function to actually start the engine!!!!

I've done that sort of thing before... I spent ages trying to figure out a syntax error with cout before. Turns out I used >> instead of <<. It was even saying "Invalid >> used with cout"; which I should have read
Last edited on
Could you link me to something when it gets done? I am still doing tic tac toe :( and I want to see others game ( you don't have to include source code or anything )
Of course I would include source code. How would you learn from it if I didn't? Anyway, I doubt it'll be very good...

I always include source code with everything I make; almost like practice for when I get 'good' and am making software people might actually use. Although where that's impractical (source code is normally bigger than executables... e.g. Linux kernel is >300MB source code and <4MB compiled) I just include links...

Oh and based on the decision that there isn't enough public domain source code on the internet (there's alot, but not enough) so I'll make the source public domain...
Last edited on
Where's your code posted at I wanna see others code, and also I learned organization from meh tic tac toe game if I make an online version, I will re-write the code
Nah; all I've written so far is to check a config file in the noobiest way possible: a bunch of find()s and if statements, then initialize SDL. That's it.

Also I don't even have that code on me. It's on my school PC, and, as expected their stupid server-connect-thing so I can actually do my homework only works on windows xp.
Last edited on
I've written some more.
Now it gets everything ready and enters a main loop.

All you'll see is an image on the screen and a cross-hair in approximately the centre of the screen.

The problem is that I want to supply one-size-fits all (1600x1200 because almost no-one has a screen that large) images; but I can't resize them at runtime. I'll do something about it later.

http://www.mediafire.com/?mmuzzk4i3rz
Topic archived. No new replies allowed.