Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
GROVER CURES HOUSE
Aug 26, 2007

Go on...

veco posted:

It's possible that there's a bug...or three. I haven't messed with it for a while, too busy with other stuff. I just saw this thread and thought it might be handy for others using XNA and needing to look at pathfinding.

Haha I'm already testing your code with my prototype. :)

You seem to have misspelled "diagonal" though.

Adbot
ADBOT LOVES YOU

veco
Aug 26, 2008

Broken Knees Club posted:

Haha I'm already testing your code with my prototype. :)

You seem to have misspelled "diagonal" though.

Yeah, I caught that after looking at the screenshot with the apparent bugs.

In my defense it was a late night.

BizarroAzrael
Apr 6, 2006

"That must weigh heavily on your soul. Let me purge it for you."
So I think I'm going to pick up the O'Reilley XNA book, along with the C# book recommended earlier, has anyone used it? Or should I got with their C# book and go to someone else about XNA itself?

GROVER CURES HOUSE
Aug 26, 2007

Go on...

BizarroAzrael posted:

So I think I'm going to pick up the O'Reilley XNA book, along with the C# book recommended earlier, has anyone used it? Or should I got with their C# book and go to someone else about XNA itself?

Get the C# book, learn XNA by doing. Even though I have that O'Reilly book and consider it a pretty good starting point, there is no real reason to buy it. All of that knowledge and then some can be found on the Internet, for free, usually in greater detail with plenty of discussions and stupid newbies getting things wrong.

Sigvatr
Jan 7, 2008

by elpintogrande
Are there any other goons who are with me here when I recommend not using any game engines but writing your own from scratch?

Dijkstracula
Mar 18, 2003

You can't spell 'vector field' without me, Professor!

Sigvatr posted:

Are there any other goons who are with me here when I recommend not using any game engines but writing your own from scratch?
It depends entirely on what you want to get out of the whole affair.

Writing an engine from scratch can be a fantastic learning experience. In my experience, CS majors don't write enough nontrivial programs in school, so building something up from first principles can be very educational from a software engineering perspective. Also, I think it's a good thing to implement a camera system and learn a bit about scene management in a toy engine, since using someone else's will guarantee that all this is abstracted away from you.

That said, it's unlikely that what you write will be more technically interesting than what you could get by linking against Ogre or Torque, so there's definitely a good reason to not re-invent the wheel. If you're intending for your product to actually reach market, then you certainly don't want to spend untold hours building the framework that other engines basically give you.

Avenging Dentist
Oct 1, 2005

oh my god is that a circular saw that does not go in my mouth aaaaagh
If you want to make a game, it's dumb to write your own game engine unless you have a good reason (e.g. you want to pioneer 4D rendering). If you want to make a game engine, well then there you go.

Sigvatr
Jan 7, 2008

by elpintogrande
Well I'm writing an engine for my basically because it NEEDS it. I hosed around with 3 different game engines until I realized that what I needed was a scratch built engine.

That being said, it isn't particularly difficult, just time consuming.

I'm not trying to reinvent the wheel, it's just that I am really fussy about how all the engines I have used so far tend to handle things.

Sigvatr fucked around with this message at 03:09 on Oct 12, 2009

Vinterstum
Jul 30, 2003

Sigvatr posted:

Well I'm writing an engine for my basically because it NEEDS it. I hosed around with 3 different game engines until I realized that what I needed was a scratch built engine.

That being said, it isn't particularly difficult, just time consuming.

I'm not trying to reinvent the wheel, it's just that I am really fussy about how all the engines I have used so far tend to handle things.

Making a engine isn't that hard, but making a good engine most definitely is.

If you've made a couple of previous small games using other engines, then sure, go ahead. If you haven't though, stop what you're doing. You're going to repeat all the mistakes that most other engines did and subsequently solved, and if your goal is to actually complete this game, you just reduced the chances of that happening significantly.

What you're describing is pretty much spot on the "Not Invented Here"-syndrome that plagues much of the software industry. Often ending up with not only reinventing the wheel, but never finishing it and instead just ending up with two-three really efficient spokes.

Getting used to working with other people's code is a learning experience in itself, which is probably more valuable than learning what kind of space partitioning scheme works best for your scene management.

Vinterstum fucked around with this message at 07:32 on Oct 12, 2009

OneEightHundred
Feb 28, 2008

Soon, we will be unstoppable!
Making a game engine is a great way to learn things, and a terrible way to complete anything. Especially if it's a 3D engine in which case you'll be stuck with the nightmare of getting content.

GROVER CURES HOUSE
Aug 26, 2007

Go on...
On the topic of engines, has anyone encountered a 2d XNA engine that did not schizophrenically abstract away everything and then provide no sources or means to extend the provided functionality without resorting to Bad Things? FlatRedBall :argh: is not too bad, but some classes actually manage to make things more difficult without adding to functionality and the lack of in-depth documentation means I have no idea whether or not those classes can be replaced. My scrub programming skills don't help one bit either. :(

tldr:
  • Provides sources
  • 2D
  • XNA
  • Does not set 0,0 to the bottom left corner without asking you :argh:

GuyGizmo
Feb 26, 2003

stupid babies need the most attention
I'm also looking for a game engine recommendation.

I'm looking for a good, preferably cross-platform, and preferably free engine that can be used for 2D or 2.5D games (and in this case, 2.5D means a 2D game rendered with 3D graphics, to some extent). I've already explored XNA, and the problem is that it's not powerful enough for what I want to do. Essentially, I'm looking to make a game with music synchronization of user events, much like Rez or Lumines, and unfortunately XNA doesn't have enough low level control of audio to do what I need.

My guess is I might just need to resort to DirectX, or if I want cross platform OpenGL and some cross-platform audio library (like OpenAL maybe?), but having a game engine that simplifies things would be awesome. Any good suggestions?

Hubis
May 18, 2003

Boy, I wish we had one of those doomsday machines...

GuyGizmo posted:

I'm also looking for a game engine recommendation.

I'm looking for a good, preferably cross-platform, and preferably free engine that can be used for 2D or 2.5D games (and in this case, 2.5D means a 2D game rendered with 3D graphics, to some extent). I've already explored XNA, and the problem is that it's not powerful enough for what I want to do. Essentially, I'm looking to make a game with music synchronization of user events, much like Rez or Lumines, and unfortunately XNA doesn't have enough low level control of audio to do what I need.

My guess is I might just need to resort to DirectX, or if I want cross platform OpenGL and some cross-platform audio library (like OpenAL maybe?), but having a game engine that simplifies things would be awesome. Any good suggestions?

Well, none of these are 'engines', but if you want cross platform at least aim for SDL since it wraps OpenGL and OpenAL (among other things). Pyglet might also be a good choice if you want to play around in Python.

GuyGizmo
Feb 26, 2003

stupid babies need the most attention
I'd should have mentioned that I'd love to work in Python if possible. I'll take a look at Pyglet or whichever game libraries I can find.

What sort of performance can I expect out of Python? The sort of game I want to make wouldn't be any slouch, since I'd be interested in implementing lots of complex backgrounds, animated characters, and what have you. They might all be sprites since I haven't decided on the 2D vs 2.5D thing yet, but one of my concerns with Python was that I wouldn't be able to get enough speed out of it unless it were running on an adequately fast system.

PnP Bios
Oct 24, 2005
optional; no images are allowed, only text

GuyGizmo posted:

I'm also looking for a game engine recommendation.

I'm looking for a good, preferably cross-platform, and preferably free engine that can be used for 2D or 2.5D games (and in this case, 2.5D means a 2D game rendered with 3D graphics, to some extent). I've already explored XNA, and the problem is that it's not powerful enough for what I want to do. Essentially, I'm looking to make a game with music synchronization of user events, much like Rez or Lumines, and unfortunately XNA doesn't have enough low level control of audio to do what I need.

My guess is I might just need to resort to DirectX, or if I want cross platform OpenGL and some cross-platform audio library (like OpenAL maybe?), but having a game engine that simplifies things would be awesome. Any good suggestions?

Take a look at OpenTK. http://opentk.org/project/opentk
It has direct bindings to OpenAL, and is probably the best OpenGL wrapper available.

GuyGizmo
Feb 26, 2003

stupid babies need the most attention

PnP Bios posted:

Take a look at OpenTK. http://opentk.org/project/opentk
It has direct bindings to OpenAL, and is probably the best OpenGL wrapper available.
That looks very promising, actually. I'll look into it some more.

BizarroAzrael
Apr 6, 2006

"That must weigh heavily on your soul. Let me purge it for you."
I'm hoping someone with more experience with larger projects could help me, I'm looking to make a sidescrolling beat-em-up a la early '90s Konami arcade games. I'm looking at either Flash, which I'm familiar-ish with, but might not be completely ideal, or at C# and XNA. I can probably do it quicker in Flash, and I suspect all the sprite animation will be easier, though I'm thinking perhaps it might need to be C# if I want to do it right.

Maybe I'm over-thinking it though, I'm just keen to start a project in C# for portfolio purposes.

a cyberpunk goose
May 21, 2007

:unsmith: I made something! I've been working on the level editor for a small multiplayer game I'm slowly piecing together.



I'm slowly working on a zelda 3-like game rendered in opengl. The way the engine is setup is pretty zany, basically there are a few modules that get linked to the executable that runs Stackless Python, I'm using wxpython, OpenGL, CEGUI and stackless python to put this all together and it's coming along nicely. I can make a meager attempt at asking any questions. The hope is to be able to support ~50 players in a realtime mini-rpg sort of adventure setup. The FPS is half of what it normally is since it's a debug compile.

danishcake
Aug 15, 2004

Mido posted:

:unsmith: I made something! I've been working on the level editor for a small multiplayer game I'm slowly piecing together.



I'm slowly working on a zelda 3-like game rendered in opengl. The way the engine is setup is pretty zany, basically there are a few modules that get linked to the executable that runs Stackless Python, I'm using wxpython, OpenGL, CEGUI and stackless python to put this all together and it's coming along nicely. I can make a meager attempt at asking any questions. The hope is to be able to support ~50 players in a realtime mini-rpg sort of adventure setup. The FPS is half of what it normally is since it's a debug compile.

That's a nice tileset. Your own work?

I'd be interesting in your thoughts on CEGUI. I've used it and hated it. While it's very flexible and shouldn't require much code to make do novel things I find it instead requires 50 times as much dense XML using obscure attributes. And the default skin is ugly as sin.


I would also like to do a quick 'was that a dream' check. I'm sure a couple of months ago I stumbled across a new SVG -> SDL_Surface renderer with no major dependencies and high quality output. Now I can't find head or tail of it, only a lovely old library from years ago and some guy who was happy to link against Cairo. Am I going mad? Did I dream it?

a cyberpunk goose
May 21, 2007

danishcake posted:

That's a nice tileset. Your own work?

I'd be interesting in your thoughts on CEGUI. I've used it and hated it. While it's very flexible and shouldn't require much code to make do novel things I find it instead requires 50 times as much dense XML using obscure attributes. And the default skin is ugly as sin.

The tileset was gifted to me from a good friend who does amaaazing pixel art. My own talents are not bad but his are better.

CEGUI is an interesting topic. Everything you have said is correct about it, it's stupid, most people hate it, the looknfeel files are atrocious and falgard is neat but goddamn Eddy make an editor or something! CEGUI also receives criticism for it's many singletons.

That said, after taking the time to really get a grasp of the nitty gritty when it comes to making looknfeel files and editing imagesets, it's not so bad. I would say the biggest flaw CEGUI has, is it's default distribution. The default distribution has no "good" default looknfeel file. Taharezlook is hideous, and Vanilla is TOO simple. A very basic template with an imageset item for each corner, edge and center brush, along with a basic titlebar would suit many people just fine and be easy enough to customize, since that's all many people need. I sat down and figured out the looknfeel format, and after a few hours I managed to make a few essential looknfeel widgets. With what I learned, I can safely say that the looknfeel files are really powerful, but the overall apprehension for CEGUI mostly comes from the lack of a good example.

EDIT: In the editor screenshot I posted, the game/level is rendering inside of an overloaded CEGUI Window, and I push the opengl states and set up ortho and the viewport to reflect the pixel size of the CEGUI widget. By doing this, the game rendering occurs as if it was a widget, allowing you to access it from python as a GUI element and you can render things behind and infront of it.

a cyberpunk goose fucked around with this message at 01:49 on Oct 21, 2009

Ludicrous Gibs!
Jan 21, 2002

I'm not lost, but I don't know where I am.
Ramrod XTreme
I'm trying to write a simple hitbox-based collision detection routine, and I'm running up against a sticky question. What do I do if an object with a small hitbox moves many times its hitbox size in a single frame? If I don't do some interpolation and testing between the two positions, I could easily end up with a situation where a projectile moves through a target it should have hit, like on those Galaga machines you sometimes saw that were hacked to double the player's missile speed.

Problem is, I can't come up with a good algorithm for doing so. What's a standard way of dealing with this problem? (FYI, my game's target updates-per-sec is 60)

a slime
Apr 11, 2005

Place restrictions on minimum object size and maximum velocity or google continuous collision detection

Hubis
May 18, 2003

Boy, I wish we had one of those doomsday machines...

Ludicrous Gibs! posted:

I'm trying to write a simple hitbox-based collision detection routine, and I'm running up against a sticky question. What do I do if an object with a small hitbox moves many times its hitbox size in a single frame? If I don't do some interpolation and testing between the two positions, I could easily end up with a situation where a projectile moves through a target it should have hit, like on those Galaga machines you sometimes saw that were hacked to double the player's missile speed.

Problem is, I can't come up with a good algorithm for doing so. What's a standard way of dealing with this problem? (FYI, my game's target updates-per-sec is 60)

<Pedantic Tangent>
This is an intrinsic problem with discrete updates. The ideal solution is to intersect a "sweep" of the movement, corresponding to an volume approximating the space the hitbox moves through over that timestep. So, an elongated rectangle, in this case. Intersecting all the sweeps against one another gives you all the potential hits during that timestep; once you have the potential intesections, you can then look at the Position+t*Velocity calculations for each pair of intersecting objects to see if they actually intersect (are at the same T-value where the potential intersection occurs).

The primary problem here is deciding what happens when you actually have a collision. Since a collision event likely changes the physical properties of the system (or at least a set of objects within it), you then need to recalculate potential intersections from that point onward again. You can do clever things where you don't re-compute motions for objects that could not possibly be affected by a collision, rolling back parts of the world if an invalidating collision occurs after the fact, or a a variety of other sophisticated techniques.
</Pedantic Tangent>

The simplest/brute-force solution is to just have several sub-updates per frame. You could also conceivably separate small objects into a group that is updated at a higher frequency.

GuyGizmo
Feb 26, 2003

stupid babies need the most attention
Back on the subject of game engines, how well does Python or any of the free Python game engines work? Python being what it is, I suspect that any functionality I might need will be there, like bindings for OpenGL and OpenAL or whathaveyou. But in practice does it tend to be speedy enough to handle a 2D game with sophisticated graphics?

UberJumper
May 20, 2007
woop
What is the standard for 3d Models? Or do most engines just use their own internal format?

Mata
Dec 23, 2003

GuyGizmo posted:

Back on the subject of game engines, how well does Python or any of the free Python game engines work? Python being what it is, I suspect that any functionality I might need will be there, like bindings for OpenGL and OpenAL or whathaveyou. But in practice does it tend to be speedy enough to handle a 2D game with sophisticated graphics?

I recommend using pygame and rabbyt and/or pyglet. The animator classes in rabbyt are genius and make it ridiculously easy to get a good looking game. For 2d games I wouldn't bother using OpenGL or anything like that all and just use rabbyt sprites. That's up to you though!

ugg
Jul 30, 2009
I've been gaming my whole life and programming for a few years now and would like to chat with people about game development. Every aspect is interesting to me, from programming to art to level design. Drop me a line:
AIM: flywhiteguy972
GChat: joeguitar / at^ gmail

PnP Bios
Oct 24, 2005
optional; no images are allowed, only text

UberJumper posted:

What is the standard for 3d Models? Or do most engines just use their own internal format?

Most engines have their own internal formats. The easiest to get started with is probably Waveform OBJ files. They are pretty simple to parse.

UberJumper
May 20, 2007
woop

PnP Bios posted:

Most engines have their own internal formats. The easiest to get started with is probably Waveform OBJ files. They are pretty simple to parse.

Awesome, i have been playing with .X for a little bit. But Waveform OBJ files seem a little nicer.

I have a question, i don't know if im just beyond exhausted. How can i emulate a day and night cycle mathematically?

I have a timer right now that records time delta between the previous update call. its in miliseconds, so its not super accurate but im just doing this for fun.

Anyways, lets say a normal full day in the game engine takes 10 minutes, so thats 600,000 milliseconds.

How can i have a day night cycle with a variable speed? =(

All i really want to do right now is control the ambience, lighting setting.

Contero
Mar 28, 2004

For some reason I'm having a hard time with google on this. Can someone post the matrix for rotation t about an arbitrary unit vector <x,y,z> (right hand rotation)?

BATH TUB
Jun 27, 2003

Contero posted:

For some reason I'm having a hard time with google on this. Can someone post the matrix for rotation t about an arbitrary unit vector <x,y,z> (right hand rotation)?

Did you try "matrix rotation about arbitrary axis"? I'm getting a million good results for that.

Fecotourist
Nov 1, 2008

Contero posted:

For some reason I'm having a hard time with google on this. Can someone post the matrix for rotation t about an arbitrary unit vector <x,y,z> (right hand rotation)?

If you have the balls, look into quaternions.

Avenging Dentist
Oct 1, 2005

oh my god is that a circular saw that does not go in my mouth aaaaagh
http://mathworld.wolfram.com/RodriguesRotationFormula.html

haveblue
Aug 15, 2005



Toilet Rascal

UberJumper posted:

How can i have a day night cycle with a variable speed? =(

All i really want to do right now is control the ambience, lighting setting.

ambientLightIntensity = sin(currentMilliseconds/millisecondsPerDay*pi*2)?

As for the actual ambient light, that depends on your graphics system, but in general you'd want to set up a directional light and rotate it around an axis in the ground plane based on that formula.

a cyberpunk goose
May 21, 2007

GuyGizmo posted:

Back on the subject of game engines, how well does Python or any of the free Python game engines work? Python being what it is, I suspect that any functionality I might need will be there, like bindings for OpenGL and OpenAL or whathaveyou. But in practice does it tend to be speedy enough to handle a 2D game with sophisticated graphics?

If you want to just pump out a game (which more people should these days, dammit!) then follow this guy's advice. If you want to really get nitty gritty and learn a lot about the under the hood nonsense, I'd recommend the masochist option and using C++/OGL/Fmod or something.

Intel Penguin
Sep 14, 2007
hooray

GuyGizmo posted:

Back on the subject of game engines, how well does Python or any of the free Python game engines work? Python being what it is, I suspect that any functionality I might need will be there, like bindings for OpenGL and OpenAL or whathaveyou. But in practice does it tend to be speedy enough to handle a 2D game with sophisticated graphics?

You say XNA isn't powerful enough for what you want, but you want to work with python. Huh? Care to explain?

GuyGizmo
Feb 26, 2003

stupid babies need the most attention

Intel Penguin posted:

You say XNA isn't powerful enough for what you want, but you want to work with python. Huh? Care to explain?
The game concept I'm trying to get started working on involves synchronizing the background music to user events, kind of like Rez or Lumines. XNA doesn't provide any sort of advanced control over audio or the sound card. All you can do is tell it to play sounds and pause sounds - that's about it. You can't even query what point in a wav is currently being played. There's also an indeterminate amount of latency between when you tell a sound to play and when it actually does, so that makes trying to do proper synchronization nearly impossible.

I'd be surprised if Python didn't have some kind of module somewhere that gives you low level control over the sound card, though. A module that binds to OpenAL will probably do the trick. However, I'm still considering my options right now.

How does Python's performance compare to other semi-interpreted languages, like C# and Java?

Intel Penguin
Sep 14, 2007
hooray
C# is lower level than python as far as I know, since C# is compiled to intermediate code while python is purely interpreted. The built in sound for XNA isn't that precise but you could always use another sound library with XNA while still using it for the other parts, like graphics.

Avenging Dentist
Oct 1, 2005

oh my god is that a circular saw that does not go in my mouth aaaaagh

Intel Penguin posted:

C# is lower level than python as far as I know, since C# is compiled to intermediate code while python is purely interpreted.

Python is compiled to bytecode. Haven't you ever wondered what .pyc files are?

Adbot
ADBOT LOVES YOU

GROVER CURES HOUSE
Aug 26, 2007

Go on...

GuyGizmo posted:

The game concept I'm trying to get started working on involves synchronizing the background music to user events, kind of like Rez or Lumines. XNA doesn't provide any sort of advanced control over audio or the sound card. All you can do is tell it to play sounds and pause sounds - that's about it. You can't even query what point in a wav is currently being played. There's also an indeterminate amount of latency between when you tell a sound to play and when it actually does, so that makes trying to do proper synchronization nearly impossible.

Eh what. There is latency I suppose, but if it's noticeable then you're doing something horribly wrong.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply