Slashdot Mirror


Ask Slashdot: How To Find Expertise For Amateur Game Development?

New submitter es330td writes "I'd like to write a program that takes the old cannon game to another level, but instead of the path being a simple parabolic arc, the projectile will move through a field of objects exerting gravitational attraction (or repulsion) and the player will have to adjust velocity and angle to find the path through the space between launch point and the target.In an ideal world, this would end up as one of these Flash based web playable games, as that would force me to fully flesh it out, debug and complete the app. I doubt this will ever be commercial, so hiring somebody doesn't make sense, and I wouldn't learn anything that way either. I have been programming for almost 20 years, but the bulk of my work has been in corporate programming, primarily web (Cold Fusion, ASP & C#.Net,) or VB6 and then C# Windows GUI interfaces to RDBMS. I have never written a graphics based game, nor have I ever written something using the physics this will require. Once upon a time, I could program in C but I think I would be much better off to work with someone rather than try to roll my own unless good books exist to flatten the learning curve. Any advice on how to proceed?"

20 of 188 comments (clear)

  1. Javascript by Vixe · · Score: 4, Informative

    If you learn javascript and make it a web-based type deal, you can use something like processing js [ http://processingjs.org/ ] to handle the graphics for you.

  2. Re:Moron by Anonymous Coward · · Score: 5, Insightful

    Er no they're not. I'm an expert amateur photographer. I do not make a living doing it, but I take works of art compared to professional wedding photographers.

  3. Rotation is the hardest stuff by mangu · · Score: 4, Informative

    Physics simulation of rotation is complicated because you are handling matrices and vectors. Google David Baraff for a good reference. Russell Smith's ODE is a good library for this.

  4. Too late! by togofspookware · · Score: 4, Informative

    Angry birds is already doing it.

    This is what someone called, uhm, 'emergent ideas', or something. You think of something new only to find out someone else announced the same project a week ago!

    --
    Duct tape, XML, democracy: Not doing the job? Use more.
    1. Re:Too late! by pjt33 · · Score: 5, Informative

      I did it three years ago as an entry for the Java4k Game Contest: Gravitational Fourks. And my inspiration was a game I played on the Acorn Archimedes in the early 90s.

    2. Re:Too late! by emj · · Score: 4, Interesting

      There is a slightly more "flashy" version called gravitee wars. Polished and stuff.

    3. Re:Too late! by artor3 · · Score: 4, Interesting

      It was done in Flash games long before Angry Birds decided to do it.

      I like to call it the iPod Effect -- people assume that whatever company gets rich with an idea must have been the one to invent it.

  5. Stackexchange by Letharion · · Score: 5, Informative

    http://gamedev.stackexchange.com/ is a great place to ask game development related questions.

    1. Re:Stackexchange by Anonymous Coward · · Score: 5, Informative

      I'm currently a student studying game programming, and http://www.gamedev.net/ has been a godsend. The forums are by far the best I've found. There is a Help Wanted section, and it varies in how serious or deadlined the projects are, so that could be a good place to find a potential partner.

      If you're familiar with C#, look into XNA. The framework is built in C#, it's free and its projects can be run on PC/XBOX Indie/Windows Phone. Other options would be Flash or the Unity engine (can run in browsers, scripted with C# or Javascript).

      I like your idea, could be a fun casual game.

    2. Re:Stackexchange by The+Optimizer · · Score: 4, Informative

      Mod parents up. I've been making games professionally for over 15 years, and I was going to mention both of those sites.

      My general advice, when asked, "How do I learn to make games" is to 1) Look around online as there are communities and resources all over, and 2) Just start making something, anything. Do it rather than talk about it. Start with something small - an early Atari 2600-class game project - and expand as you become comfortable and more knowledgeable and experienced.

  6. 20+ years? You're already an expert. by Anonymous Coward · · Score: 3, Informative

    You seem to be an expert programmer, so I'll just point you to the XNA library here [http://msdn.microsoft.com/en-us/library/bb198548.aspx] and let you figure it out from there.

  7. first small step... by Tastecicles · · Score: 3, Informative

    have a look at this.

    --
    Operation Guillotine is in effect.
  8. Well what is your purpose? by Weaselmancer · · Score: 4, Insightful

    First you say this:

    hiring somebody doesn't make sense, and I wouldn't learn anything that way either

    Ok. So you're looking at this as a learning experience. That's great. But then you say this:

    Once upon a time, I could program in C but I think I would be much better off to work with someone rather than try to roll my own

    So you're looking for someone to do this for you and not learn any coding.

    I think you need to consider why you want to get involved in this in the first place. If you want to learn game programming, that's great. Go do it. If you want to learn project management, that's good too, go do that. But first I think you have to figure out what your goal here actually is.

    I will tell you this though. Until you narrow down your scope and figure out exactly what you want, the dithering is sending up some flags. You have an idea, you say you're not interested in money, yet you want someone to write a game for you based on an idea you have, and you're not willing to pay anything to get it done. Jaded old programmers like me hear this kind of a thing and mentally translate it into "I want you to write a program for me so I can get rich from it without doing any of the actual work."

    --
    Weaselmancer
    rediculous.
  9. Re:Moron by alphatel · · Score: 4, Funny

    No this is totally undiscovered country. You need to hire 20 kids at $20 per hour and tell them to make the game. Have them work like two months, tell them it is okay to rip off other games. Brand your company Winga, or Singa or something unique. Copyright the game before it is done, sue everyone who tries to release anything which remotely resembles your game. Profit. Go Public. Profit more. Wait for Facebook IPO. Sell, sell, sell!

    --
    When the foot seeks the place of the head, the line is crossed. Know your place. Keep your place. Be a shoe.
  10. html5 by gr7 · · Score: 4, Informative

    Read about the canvas element. You should be able to write the whole thing in javascript. You should be able to get an extremely basic version up and running within a few hours. Just play around a bit in javascript and read about <canvas>. The physics is trivial - you store the x,y vx,vy value of everything that is moving (velocity x,y). You add vx to x every cycle through your loop. You adjust vy by gravity through every cycle. Also known as ay. And you also adjust vx,vy by every gravitational point nearby. You calculate the distance sqrt((x1-x2)^2+(y1-y2)^2 ) to each object and use gravity formula which is realted to 1/distance squared so you can get rid of that sqrt and make the code more efficient. Then find the portion of accel that is due to x and y. Anyway, it's just a few hours work. Just give it a shot - don't read any books - just find an html primer website that talks about <canvas>.

  11. Go For It by mugnyte · · Score: 4, Insightful

    Although truly "new" ideas are a rare breed - don't be deterred. Build this yourself using all your skills and use it as a lesson. If you use a group, it might be more fun but just don't sub-out the interesting parts. Learn about them.

    Start with the core and work outward
    - movement of an object in space
    - applying single-point and universal gravity
    - collision detection
    - concurrent animations
    - 2D crash physics
    - some graphics

    Then story out something to power some gameplay
    - characters / features
    - scoring
    - co-op/vs online ideas

    Of course, the core has been done - but really this is for you to learn the basics. Once you do this, someday you can go from an actually novel idea to a game in less time. Who knows, down the road you may have a really good idea. My best wishes go out to you to persevere!

  12. Physics, etc by Dan+East · · Score: 4, Informative

    Well, you can look at existing physics engines, like Box2D, but it won't do what you want by default. Games of the type you're talking about simulate motion in discrete steps - usually once per frame. However, you can also decouple your motion (physics) from the rendering, but you usually only need to do that for very precise physics simulations that need to be reproducible time after time (when you decouple physics then the physics engine can always run at some fixed time interval, like 1/60th of a second, which is how realistic physics engine like Box2D function best).

    Essentially you have a simulation going, in which each object has a position in floating point precision. Each frame you calculate the duration of the previous frame in milliseconds, then you move all your objects the appropriate amount over that discrete time step. So if your frame is 10 milliseconds, and an object has an X velocity of 1 unit per second, then you increment its X value .01 units. The next frame might take twice as long to render at 20 milliseconds (maybe you have more objects, or some other multitasking app used some CPU time) so you have to move your objects twice as far - .02 units. The math is very simple. Then after moving all the objects you render them into screen space.

    As for the attractors / repulsors, you also store a velocity value for each moving object. Then each frame you calculate the distance to each attractor / repulsor, and modify the velocity based on the strength of the attractor / repulsor attenuated by (divided by ) its distance from your object. You can make it as simple or complex as you'd like. You can factor in mass, use linear or exponential repulsive effects, etc. Now if you start getting into collision detection and resolution, then things can get very complex if you're dealing with objects more complex than circles or really, really fast moving objects. For example, say you have a bullet traveling really fast, and it is heading towards a thin barrier (wall). One frame the bullet could be on one side of the barrier, and the next frame it moved so far that it is on the other side. In other words, there wasn't a frame in which the bullet was exactly in contact with the barrier. Those things can get complex to simulate, and it gets even worse when both objects are moving at the same time.

    The key thing is grasping the concept of discrete time steps, and moving objects a variable distance each frame depending on how long the previous frame took to render. You can't just hardcode the game to run at, say, 1/60th a second, because if it is running on a slower device than you tested on, or if the device is multitasking and can't spend as much processing time on your app, then things will seem to run in slow motion and be herky-jerky. The other key thing is the idea that the positions of your objects do not (and should not) correspond directly to screen coordinates. Say your world is 100x100 units. Well, when you render it, you simply scale it so that the 100 is the width of the display (if you're using something like OpenGL to do your drawing, then you just set the matrix scale appropriately). So the "real" position of the objects, and all that simulation, occurs at some arbitrary coordinate system, and then is scaled appropriately when the objects are drawn.

    As for languages, personally I recommend C++ and use OpenGL ES for rendering. Then the vast majority of your code can be used on Android, iOS, Windows, Linux, OSX, etc, but is not conducive to web-based like Flash or Java.

    --
    Better known as 318230.
  13. Re:Moron by TheRaven64 · · Score: 4, Interesting

    I think that's the point of his Ask Slashdot - he has an idea for a game and he wants to play it. Asking a bunch of geeks how to implement it is the easiest way of getting something like this done. And he's right - it does sound fun, and I hope someone does implement it because I'd like to play it too.

    For what it's worth, I wrote an n-body-problem simulation / visualisation thing in JavaScript (for no serious reason, just because I wanted to play with the canvas tag and it makes pretty patterns) and it was pretty trivial. Add half a dozen lines of collision detection to that and there's your game, aside from the UI - most of the work will be in the graphics, and even then you could largely use circles and bezier paths...

    --
    I am TheRaven on Soylent News
  14. Congratulations! by JohnnyBGod · · Score: 3, Insightful

    You're well on your way to recreating Slingshot!

    Anyhow, if you're looking at this as a learning experience, XNA seems to be the thing where you could put your skillset to work the fastest. Python also seems like a good choice, if you're willing to learn it. As for graphics/physics/whatever, there should be libraries to help you, and surely some other Slashdotter will drop a few names shortly.

  15. Re:Moron by Jarik+C-Bol · · Score: 4, Insightful

    had this idea? heck, it has been done. googled 'spaced penguins'. I played that like, 8 years ago, and it was old then. exact concept. gravity wells, target, projectile. was kinda fun for a while, and after i beat it once, I started trying to put the projectile in orbit around various gravity wells.

    --
    I've decided to Diversify my Holdings. I've divided my cash between my left and right pockets, instead of all in one.