PDA

View Full Version : Advice for a game development project?



Prime32
2010-09-27, 09:47 AM
There is a thread currently on the front page called "My School Project". So let me tell you about my pokeymans college project. Basically, a Strategy RPG (http://en.wikipedia.org/wiki/Tactical_role-playing_game) with an editor. Think Fire Emblem, or that other one (what was its name? Soup Her Robe Outdoors?)

I've been looking at a few languages and frameworks for this. Originally I wanted to do it in Java, but I'm told this will look unprofessional. :smalltongue: So, anyone written any games in C++, C#, Python? Any frameworks you can recommend?


Don't throw me ideas for storylines and characters unless you swear not to show up out of nowhere in a few years to sue me. :smalltongue:

Pyrian
2010-09-27, 10:59 AM
"Look unprofessional"? You're not a professional. :smalltongue: There are a lot of literally professional games that don't look professional, some of which do quite well. ...Professional look and feel in games, BTW, has very little to do with platform and a great deal to do with artistic assets and post-polish. If you're really going for a professional look and feel, try to be prepared to complete the game itself in half the time available.

How many hours do you have? Working in a language you already know will save you a lot of time. On the other hand, you're in school, so learning a new language is appropriate.

What are your plans/resources in terms of art assets?

...Have you considered Flash/ActionScript? As a reasonably complete integrated framework in itself, it gets you up and running a lot faster than the other languages you've discussed.

Dr.Epic
2010-09-27, 11:59 AM
There's a book I have somewhere about making video games. If I can find it, I'll give you the name of it.

kyoryu
2010-09-27, 12:28 PM
Yes, I've used C++ to write games.

In C++-land, Ogre is used a lot, though I haven't used it myself. Torchlight, at the least, was produced with it.

If you're going for 2D, you can look at SDL.

What are you concerned about with being "unprofessional"? The source code, or the final result? You can get professional looking end results with just about any language, and amateurish results with just about any language.

The one thing I do highly recommend is to not do the "all-at-once" development cycle. Even if you have a huge design written up, develop it incrementally. Force yourself to the discipline of making minor changes, as small as possible. As you make these changes, your mantra should be "the code should look like this is what was intended to begin with." And don't get too attached to any of your design ideas - often, what sounds good on paper does not work well when actually on a screen. Even more frequently, much of the complexity that people assume is absolutely needed is, in fact, unnecessary.

If you're not tied to C++, there are two engines that are worth considering: UDK (the Unreal Development Kit), and Unity3d. Of the two, I actually prefer Unity. Unreal gives you "more" out of the box, but the problem is, when I last looked at it, that it requires you to do more to make it "not Unreal," whereas Unity gives you basically a blank slate to begin with. UDK uses UnrealScript, while Unity can use JavaScript or C# (I think there's a third option, but can't remember what it is - it uses Mono as its .NET environment). Either of these would get you past a lot of the low level code and into higher-level gameplay concepts much, much faster than rolling your own.

Anyway, good luck!

Prime32
2010-09-27, 01:10 PM
What are you concerned about with being "unprofessional"? The source code, or the final result? You can get professional looking end results with just about any language, and amateurish results with just about any language.The concern brought up was that using Java where a C-type language would normally be used implies that I can't or don't want to use C. Which looks bad when applying for a position in the game industry. Meaning that this...

"Look unprofessional"? You're not a professional. :smalltongue: There are a lot of literally professional games that don't look professional, some of which do quite well. ...Professional look and feel in games, BTW, has very little to do with platform and a great deal to do with artistic assets and post-polish. If you're really going for a professional look and feel, try to be prepared to complete the game itself in half the time available.

How many hours do you have? Working in a language you already know will save you a lot of time. On the other hand, you're in school, so learning a new language is appropriate.

What are your plans/resources in terms of art assets?

...Have you considered Flash/ActionScript? As a reasonably complete integrated framework in itself, it gets you up and running a lot faster than the other languages you've discussed....is unhelpful. Flash doesn't seem appropriate, given my course is focused on coding rather than multimedia. And yeah, it's meant to be a learning experience. If I was just doing this for kicks I would have used Game Maker or something. :smalltongue:


The one thing I do highly recommend is to not do the "all-at-once" development cycle. Even if you have a huge design written up, develop it incrementally. Force yourself to the discipline of making minor changes, as small as possible. As you make these changes, your mantra should be "the code should look like this is what was intended to begin with." And don't get too attached to any of your design ideas - often, what sounds good on paper does not work well when actually on a screen. Even more frequently, much of the complexity that people assume is absolutely needed is, in fact, unnecessary.Definitely. They drilled that into us hard.

And this will probably be 2D. If there are any 3D graphics they'll likely be static (think "3D chess program"). I've used SDL through C++ and Python.


Right now I'm looking mainly at Pygame (Python + SDL), or learning C# and XNA. I apparently need reasons to use Python other than "it makes more sense than C++ (http://en.wikipedia.org/wiki/Principle_of_least_astonishment)" though. :smalltongue:

kyoryu
2010-09-27, 01:25 PM
The concern brought up was that using Java where a C-type language would normally be used implies that I can't or don't want to use C. Which looks bad when applying for a position in the game industry. Meaning that this...

Then don't use C# either. It's viewed as more-or-less the same as C++. Same with Python. If you want to look "game-industry professional," use C++. That said, 3d math doesn't change based on language. Logic doesn't change based on language.


Definitely. They drilled that into us hard.


Who is "they," if I may ask?

Prime32
2010-09-27, 01:38 PM
Who is "they," if I may ask?College lecturers. :smallconfused: I said it was a college project.

Pyrian
2010-09-27, 01:40 PM
If you want to look "game-industry professional," use C++.Yeah, that's what the majority of the big-budget games are using, and have been for a long time.

SMEE
2010-09-27, 01:44 PM
XNA is MS indie game developers friendly framework.
It goes with C# and Visual Studio Express.

Use it. It will make your life easier.

Ashtar
2010-09-27, 02:39 PM
Really I'd say use the language you know with the framework that suits.

I mean minecraft (http://www.minecraft.net/) is made in Java, can anyone deny it's already a success ? The language is unimportant unless the person grading (if there is one) has preconceptions.

The language used in a game is only the alphabet used to express the idea, the idea and its arguments are the real important parts.

If you can code a game in ActionScript, Unity or Java, then you can code a game in C++, except it will take you more time and much more effort unless you use a framework. In my experience, the adage "premature optimization is the root of all evil" usually means trying to do something in C++ because it would be faster / look more pro is 97.5% of the time overkill.

The 2.5% of the time, yes, use the appropriate language, Fortan for optimised mathematical optimizations, assembly for fine tuning routines and c++ for system programming.

kyoryu
2010-09-27, 02:55 PM
College lecturers. :smallconfused: I said it was a college project.

Yes, I know that. Is it a game-programming program, like DigiPen or FullSail? Or a game-programming class in a general CS course? Or?

The only reason I'm asking is it's obvious that you're trying to meet someone's criteria, and knowing who that is may help give better advice.

It kind of seems like you've been told to use C++, and are trying to find a way to justify not using it.


XNA is MS indie game developers friendly framework.
It goes with C# and Visual Studio Express.

Use it. It will make your life easier.

Unless he has a requirement to use C++. I mean, if this is a game being developed as part of a portfolio to get a job, I'd certainly recommend C++. For work on an indie title, C#/XNA is fantastic.


Really I'd say use the language you know with the framework that suits.

I mean minecraft (http://www.minecraft.net/) is made in Java, can anyone deny it's already a success ? The language is unimportant unless the person grading (if there is one) has preconceptions.

The language used in a game is only the alphabet used to express the idea, the idea and its arguments are the real important parts.

If you can code a game in ActionScript, Unity or Java, then you can code a game in C++, except it will take you more time and much more effort unless you use a framework. In my experience, the adage "premature optimization is the root of all evil" usually means trying to do something in C++ because it would be faster / look more pro is 97.5% of the time overkill.


And I generally agree with this - optimization is primarily dependent upon the algorithms used. You can write terrible code in C++, or great code in Java. I like to say "you can't optimize bogosort."

There are real reasons to use C++ for game development. Most middleware and decent libraries are C++-based. And if you need to demonstrate proficiency, using C++ in the game industry is certainly a plus.

Haruki-kun
2010-09-27, 03:00 PM
To further support what SMEE said, I remember having done a school project on XNA (we were told to use XNA, so we didn't have to chose anything). While it has a lot of limits, such as only working on Windows and xBox, it makes the whole thing VERY easy.

Prime32
2010-09-27, 03:10 PM
Yes, I know that. Is it a game-programming program, like DigiPen or FullSail? Or a game-programming class in a general CS course? Or?

The only reason I'm asking is it's obvious that you're trying to meet someone's criteria, and knowing who that is may help give better advice.Note the location under my av - those terms mean nothing to me. It's a general degree in which I've chosen to specialise in games, but this project is associated with the course as a whole.


It kind of seems like you've been told to use C++, and are trying to find a way to justify not using it.Nah, I've just been told cautioned not to use Java.

kyoryu
2010-09-27, 03:26 PM
Note the location under my av - those terms mean nothing to me. It's a general degree in which I've chosen to specialise in games, but this project is associated with the course as a whole.

Nah, I've just been told cautioned not to use Java.

Fair 'nuff, I should have checked your location.

If you've been "cautioned" against using Java, I'd recommend using C++. Any argument against Java would be equally valid against C#, Python, etc.

You could probably use these technologies, but your result would have to be significantly more awesome to get the same grade. Of course, given a set time budget, you should be able to deliver more functionality in C#/Java/Python than in C++, so there's that tradeoff.

SDL is probably the gold standard in 2d APIs for C++. Make sure that's okay - otherwise, it's not really hard to throw together a 2d rendering engine on top of OpenGL or DirectX. Unfortunately, as a school project you've got two sets of criteria when choosing tech - what will be most effective, and what will make the profs happy.

Dubious Pie
2010-09-27, 06:45 PM
I have made about a half-dozen games with Python and PyGame, it is awesome.

*DISCLAIMER: I am a Python developer, and I commit regularly to the Python SVN repo.*

endoperez
2010-09-28, 10:17 AM
I seem to have trouble posting to this thread...
edit: okay, it seems the forum didn't like my first paragraph - very, very weird!

1st prgprh paraphrased: Red Lynx, a Finnish developer, uses agile development (http://en.wikipedia.org/wiki/Agile_software_development) model. It's similar to Kyoru's first post, "The one thing I do highly recommend is to not do the "all-at-once" development cycle"


I got the chance to talk to people from various Finnish game companies a while ago.


Also, they think the game should be fun above anything else. I think they even said that they start by making a crude and raw, but playable, proof-of-concept, and make it fun. That probably only works for some game types, like their Trials HD, which has one major gameplay element (physics-controlled bike).

I'm not sure if this third point came from them. Consider how fun/important the feature would be for gameplay, and how easy it would be to do.
If something is IMPORTANT and EASY, do it FIRST.
If something is IMPORTANT and HARD, do it SECOND.
If something is NOT IMPORTANT and EASY, do it LAST and only if you have time.
If something is NOT IMPORTANT and HARD, don't do it at all!




How much are you supposed to do yourself, and what are the goals of the project? To design a game, to create a game, or to program something? Project management, asset creation, software design or programming? 3D programming, game logic programming, UI programming, etc?

Unity is a freeware 3D engine that supports C# scripting. Obviously that's only feasible if the goal is to create a game, not to create a working game-program from the ground up.



I only have one piece of advice for the OP. I don't know your situation so this might not be good. However, I believe it's pretty good in general.

Start so small you think you'll be finished half-way to the deadline.
That way, you'll use the first half of the available time to make the game, and the second half to polish it until it's fun. Alternatively, if something goes wrong, you'll still - just barely - be able to make the game somewhat playable before the deadline.

It took two programmers using Unity 3D, and with a team of classmates, 4 months to have a playable platformer game (Goblin's Greed (www.goblinsgreed.com) - I mostly did models, but I tried to help the programmer and saw much of the code).

There were missteps and we didn't have previous Unity experience, but you can do mistakes too and don't seem to have previous game design experience. The programming side of our project was weighted down by the artists' unreasonable demands :smallredface:, but if this is your first time doing a game you'll be weighted down by either the artists' demands, or having to do the art yourself.


Tips on how to make it easier for yourself:
Do you absolutely need to use 3D? If not, don't use it! If you have to, cheat when possible. For example, 2D sprites on 3D terrain, with a fixed camera angle. Look at Wesnoth (http://www.wesnoth.org/) to see how non-3D terrain can still be interesting.
Look at Seven Day Roguelike (http://roguebasin.roguelikedevelopment.org/index.php?title=7DRL_Contest_2010) competitions, entries, and finished projects. The yearly competitions are about making a roguelike game, in seven days. The source codes are often available!
Avoid complicated AI as much as you can.
Design first, and write the design down!

Thajocoth
2010-09-28, 11:13 AM
This is what I do for a living. Video Game AI Programmer.

Personally, I love C++. Right now I'm stuck with C#. Generally, video games are made with one of these two, professionally. Having used Java in college, I don't really see how it can be used to make a game. Too much overhead, too slow, and Swing is really horrible.

Having said that though, you should use whatever you know best. This is for a college project. If you're trying to make it truly of professional grade, you're going to need a lot longer than a semester to work on it. Since you're already so short on time, getting familiar with another language is, really, out of the question.

What's your team size? An artist, two programmers, a designer and a project manager is probably ideal for this scope.

Also, I'm assuming you want to do this on the PC? Windows is a real pain to deal with, or so I hear. I've never had to deal with Windows directly myself, but someone on the project will.

A possibility if you're really interested might be to go to dsdev.org and get the homebrew tools for Nintendo DS development. You'd need an emulator to test with. Again though, this means learning something new, which may be a bad idea given your time limit. This is also C++.

As for why you need a designated designer and project manager... There will be a lot times where people on the project disagree on design decisions, and it's good to have someone to break ties... Also level design and variable tweaking and stuff is good to have a designated person for. A project manager is necessary whenever there are more than two people on a project, to get them to actually get all their stuff done. Merging these two roles is certainly possible.

If this is a solo project... Just know that what you're taking on is the jobs of about 4 people. Art and design tend to be VERY difficult for coders. From what I've seen, coder art tends to look very bad, and coder design tends to be insanely difficult... But I've seen my share of exceptions to both and don't know your skills.

-----

Short version: Use what you know. You've got a long, difficult task ahead of you. Don't make it even harder on yourself. The end will be well worth the stress and late nights though...