Related
I want to learn the basic concepts like collision detection, rendering and others in a general way (keeping the library usage minimum). I believe that once my basic concepts are clear, it would help me in learning different libraries easily, like OpenGL, etc.
I know without libraries it will take long time to build things. I am doing this for learning so I don't care about productivity.
I would love if the solution is using JavaScript (HTML5 Canvas) or C/C++ (DOS mode) since I believe I will have to deal with a bit of low level stuff which would help me in learning. Other solutions are also welcome. I know Java as well.
Note: 2D games are sufficient for me.
Good question - A decent place to start is
http://www.gameinstitute.com/
They have some pretty fun courses, no time limit and a decent forum. I actually met some good local dev's there and since have done some stuff together.
I'd also look at getting into the yearly Global Game Jam (http://globalgamejam.org/).
It's a really great experience for novice and professional devs. You can also meet local people.
I mention "local people" cause sometimes its very difficult to do a game on your own - it really helps to have people to collaborate with. Though it brings in problems of its own (schedule conflicts, motivation, etc).
I'd take a look at the following books:
http://www.amazon.com/Ultimate-Guide-Video-Writing-Design/dp/158065066X/ref=sr_1_2?ie=UTF8&qid=1306204693&sr=8-2
http://www.amazon.com/Game-Design-Workshop-Second-Playcentric/dp/0240809742/ref=sr_1_8?ie=UTF8&qid=1306204693&sr=8-8
http://www.amazon.com/Masters-Doom-Created-Transformed-Culture/dp/0812972155/ref=sr_1_2?ie=UTF8&s=books&qid=1306204765&sr=8-2
http://www.amazon.com/Programming-Game-Example-Mat-Buckland/dp/1556220782/ref=sr_1_1?ie=UTF8&qid=1306204779&sr=8-1
http://www.amazon.com/Game-Engine-Architecture-Jason-Gregory/dp/1568814135/ref=sr_1_1?ie=UTF8&qid=1306204798&sr=8-1
This are just a few books on the top of my head that I've enjoyed in my travels.
I'd focus on a language like python that'll get you up and running quickly. Not C++ - I think you lose a lot of productivity on the language it self, templates, smart pointers, vtables, etc. And then you have all the different version of DX, Win32 GDI etc. I think you'll be more productive in a different language. Maybe lua + python?
Also, I'd seriously look into mastering an engine. I wrote my own, and it was a great journey, but we never completed the GAME! We spent 6 months writing the engine, 2 months writing the game and got burnt out. Next time I'd use an engine for sure!
Unity3D works on iphone, web, desktop.
Torque is another leader, though I didn't find this one as slick as Unity.
Cocos2d is a iphone specific framework, based on a python framework. Really slick.
Another option is taking an existing game that allows Mods (HL2, Quake, etc) and build some mods for it. You can probably find tons of forums and groups already doing it and perhaps contribute to an existing project or start your own.
Another really gnalry idea would to be to get the Blue Book
http://www.amazon.com/gp/product/0321498828/ref=pd_lpo_k2_dp_sr_2?pf_rd_p=486539851&pf_rd_s=lpo-top-stripe-1&pf_rd_t=201&pf_rd_i=032117383X&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=01F2GM7XZD56GCFW0AJT
And don't stop till you understand and have worked through it!!! You'd be a pretty good openGL / C coder by the time you made it through that book (cover to cover). Set aside a few months...heh.
Don't forget - you can always start with paper-prototyping games, you don't have to start building computer games.
Good luck!
I think you should focus on making games that are fun. Yes, you'll understand more as you work with low-level tools. However, you'll understand more about making fun games as you make more games.
Make a list of ideas for games.
Go down that list and pare things
down until they can be implemented
in 16 hours of work or so.
Pick one of the ideas, and learn
new libraries, technologies, et
cetera as you go. Don't overengineer your game.
Let other people play it. Try to
get honest feedback.
Improve your game. Stop when you
need to start from scratch to
improve it.
Go back to step 3, and try not to
make the same mistakes :)
I've decided to get some experience working on some project this summer.
Due to local demand on market I would prefer to learn Java (Standard and Enterprise Editions).
But I can't even to conjecture what kind of project to do. Recently I had some ideas about C. With C I could to contribute to huge Linux projects. I don't mean that my work will be surely commited. I could get the code and practice with it. But C it's not right thing to get good job in my area. In case of JavaSE there is a chance to develop some desktop applications. But thinking about JavaEE I get stuck. I'll be very thankful for answers.
CodingBat.com will give you good core Java practice.
Project Euler is still the best for all around practice. You can use whatever language you'd like to solve the problems there.
For actual projects, I almost always start on something easy like a Twitter client. It gets you exposure to all the basics along with UI and network communication. You can work up from there. Just don't start with something so overwhelming that you can't figure it out and want to give up. That's not going to get you anywhere.
The best advice is: work on a project that you have personal interest in. Something based on your hobbies, maybe.
If that doesn't work, make a blogging / CMS engine. Or an online photo album. Or an eStore. The world doesn't really need another of any of these things, but it will give you some good practical experience with JavaEE.
Another benefit of "re-inventing the wheel" (for learning) is that you have probably already used systems like these described above, and you have a good idea of how it can work, and maybe you have your own ideas of how it could work better. That can make requirements much simpler, and also will give you a sort of benchmark so you can see how close you can come to building a tool like the "real" ones out there. And if yours is really great, well, maybe release it and see what happens. ;)
There are many Java-based projects on SourceForge. Tinker with one you find interesting.
I've implemented either a betting pool or a Baccarat game in almost every language I've
learned.
This type of software covers:
Dates and times, with calculations
Currency types and things that can be converted to and from currency.
A discrete set of rules that is easy to test
States, transition between states and multiple entities responsible for state transition
Multiple users with different views of the same model End conditions
Multiple player blackjack and poker would work also.
One caveat is that in my day job I work on financial systems and there is a huge overlap
between things to consider when writing a multiplayer game of chance and a trading system.
build an address book. the concept is simple, so you're not stuck on "what" to write. You can focus on learning your chosen language. You get experience in working with a database, java ( insert any language here), and UI design.
when you decide to learn another language you can create the same thing. Since the database has been created already, you can focus on the language itself.
the concept of inputting data, storing data, and retrieving data is central to a lot of applications.
Have a look around http://openhatch.org/ for a project that sounds interesting.
This Question about how do i learn from basic As3 to advanced as3 , as i want to become professional in as3.And work as freelancer.
can anybody guide me how to reach to the peak of Action-Script-3.
This question seems to be really funny to many but this is the most basic question in my mind
1) which way to go.
2) what steps i should follow.
3) how should i do my first project professionally.
4) how do i become excellent in as3
I believe actionscript 3.0 and Flash in general allows you work on a wide variety of projects:
from interactive rich media web interfaces, to interactive video, animation, games, desktop applications, rich internet applications, physical installations, creative and abstract pieces, etc.
It's up to you what you want to do, but I'm guessing if you start with something that motivates you, something that you enjoy working on and learning, it's a sure way forward
and it will make the boring bits more fun, and that's what it should be about: FUN!
It doesn't matter if it's actionscript or something else you want to learn, enjoy learning/challenging yourself and you'll get there faster than you think.
Answer 1.):
With regards to actionscript, based on what you want to do with it, there are a couple of good starts. Let's say you're interested in just the code, not planning to use the Flash IDE much or at all, and your aim to develop great applications. as #David Morrow said, Colin Moock's Essential Actionscript 3.0 is great. Also his guide From the Ground Up is a compressed version of the book.
An easier lecture, but packed with hands-on tips to getting things done in actionscript 3.0 is Rich Shupe's Learning Actionscript 3.0, also from O'Reilly. This might help you get up to speed with project you might have in mind.
Answer 2.) and 3.):
In short you have at least two routes:
easy/practical start where you learn
by doing small mini projects, but
keep in mind there are gaps to fill
in order to move on to complex
projects
a 'harder'/more theory based start,
that will cover advanced topics, so
you will ready to take most projects
out there, simple or complex.
Answer 4.):
It also important to keep in mind that there is no substitute for experience! Learn how ever it feels comfortable, but plan time for practicing/writing a lot of code/failing/fixing/repeating. Don't worry about getting things wrong! I don't know any programmer that can write a complex project perfectly from start to finish. Basically all projects out there are the result of this loops of failing/fixing/learning/ if you want to put it this way.
Never be afraid of getting things wrong ! You learn more this way, than getting things right, but not fully understanding why, also, you can discover something new. You can't run
into happy accidents if you don't have accidents at all.
As you progress you will like some things more than others. It is important to try everything when you learn. Knowing what you don't like is just as important as knowing what you like. Don't take everything for granted and form your opinions while learning.
You mentioned peaks. It's great to aim high. As I mentioned earlier, actionscript can be used for so many things, that it's hard to be the best in all areas. Andre Michelle and Joa Ebert for example are very talented developers and have a lot of experience with sound. Chris Georgenes on the other hand is a very talented animator. I wouldn't expect roles to swap anytime soon. If it helps, choose people that are actionscript virtuosos, get inspired by their works, there are plenty of them out there.
HTH,
George
understand OOP classes and packages.
Inheritance and polymorphism
keep all content in external xml files
dont ever put any code in your fla
start building a library of reusable classes for common tasks ( a util library )
start working with the Essential Actionscript 3.0 and you are on your way...
read and understand this entire book and you will be rolling
The simplest, yet probably most important answer is: Use it.
The only way you'll become advanced in AS3 (or any language) is to just start using it. Do some experiments, maybe create some small tools for yourself, or find an open source app and start contributing to it.
Books will help, but they're no substitute for actual experience using the language.
As they say, you need to learn to crawl before you can walk.
You need a solid understanding of programming. See David Morrow's answer for things you should know. Also add to the list a knowledge of datastructures.
Start programming. As George Profenza said, start with a simple project first and something that you will enjoy doing. If you undertake something too big you may end up disillusioned. The best thing about working on little things often is that you will encounter certain problems, and you will learn through experience on how to tackle them.
Once you have the basic hang of things start looking at other people's source code. Visit blogs of various well known flash developers and go through their code. Learn from the best. My blogrole is a list of such people.
After a while, maybe a year or so you will be a decent AS3 programmer. Remember AS3 is just a tool. What seperates the men from the boys is being able to solve problems. Start tackling more complex problems, for example, develop a voxel engine or something along those lines. The best programmers tend to experiment with problems in the field of computer science. In doing so, they become knowledgable on various things like 3D rendering, Audio etc and develop unique skills placing them on the cutting edge.
Well I'm a visual programmer, i only learn as a means to an end - I want to make things.
If you are as i am - then here's what I recommend to go from basic AS3 to advanced AS3.
Make a game. OR, and this might be an even better route.
Clone a game that you like - e.g. tetris, bomberman, pacman
I know it a single statement answer.... not fancy, but - you will HAVE to learn so much in the process of creating it.
I am doing CS undergrad, with the intention of pursuing a masters and maybe later a phd in neural networks, so that is certainly my main area of interest, but I am also good in fine arts and enjoy gaming so I want to start a little bit of 3d artwork and game dev in my free time. Problem is I don't know where to start.can anyone in the field of game dev list step by step how I should progress down this road? thanks
ps: not sure if this is something that matters but I have a copy of xna gaming studio so I'd prefer to use that instead of buying something else
There are some open source games that are currently in progress (and some completed) on sourceforge. When I first started looking at game programming, I looked at working games and their source. It'll be more informative in the long run to look at these kinds of things rather than trying to start from scratch.
Some of them are even looking for contributors if you wanted to try to help out.
There are plenty of XNA resources at Ziggyware, and there are many ways to do 3D art like the XSI Mod Tool and others. You can find many free engines at Codeplex which will help you get started and you can use things like the FlatRedBall engine to help you along. Don't forget the Creators Club which has plenty of samples and info on making XNA games.
Look on those sites, get some samples and games and try them out, and then select a simple game to clone (say asteroids or tetris or something). Then if you get that done pretty well you can move onto 3D. Honestly, i wouldn't recommend jumping right into 3D as it involves a lot of messy dealing with effects and such (although there may be frameworks out there that alleviate that). As others have said, learning a lot of 3D math is a good idea even though the framework can handle most of the stuff like matrix math and things like that.
http://www.sloperama.com
http://www.igda.org
get as much 3d math as you can
make what games you can in your spare time, as many as you can finish.
Learn by doing, and show that you can see something through to completion
Edit:
Some good starters are Ogre and XNA, or make your own
Also, I notice now you said part time. Other than hobby work or volunteer work there's not much in the way of "part time" game dev work other than maybe QA testers.
Don't pay for a framework (well, not for a while). You can get a great start for free with XNA, like you mentioned, or Ogre (to name another free option). Torque is cool and all, but you should start small.
Build Tetris. Seriously. Think of it as stretching before the real game. It's impossible to get everything right the first time, so start out with a simple, bite-sized target.
Mod the existing starter kits XNA provides. Once you've worked with someone else's "engine," you'll have a better sense of what you do and do not want in your code.
Look around for other tutorials. One of my favorites for XNA is here. It's a 3D engine, with a solid object-oriented design.
As one of two programmers of the Threewave Capture the Flag mod for Quake 3, I can attest to working on (and shipping) a mod as being an incredibly rewarding introduction to gaming.
Working on a mod situates you next to production code, with all of its conventions and warts. It also introduces you to an already-working codebase that is, at a minimum, a few hundred thousand lines of code. This teaches you to be able to search and read code and primes you for working on a team.
You also get to work with quality art assets and ship a product that garners attention for you and your small group.
Working with XNA or downloading libraries and hanging out in forums is alright, but neither of them give you the starting point of a defined product, already commercially successful.
These days, Half-Life 2 seems like a great starting point. Lots of C++ code, community support and a history of Valve and other studios hiring top talent from their own community.
Best of luck!
I am looking for a somewhat detailed explanation of which 3D Engine for Actionscript3 is the most efficient, practical, scalable, documented, community supported, etc. When I first got interested in the 3D world for flash and actionscript3, all I knew of was papervision3D. In my curious way I went to read up on papervision3D and was shocked at the lack of tutorials. Later I started to research Away3D and have found that their site is easy to traverse and there are many tutorials and easy to find documentation.
Is there something I am missing? Is papervision3D so good that it doesn't need tutorials and other mediums to help users adopt it and begin using it more often? Does it have a performance increase that allows this? Which 3D engine do you suggest?
I came up against this same issue a few months back. In the end, I went with Sandy3d. What did it for me is the amount of quality documentation and the really supportive community which really helped me get my project up and running.
http://www.flashsandy.org/blog/
I'd go with Away3D, if only because we know they are working so closely with Adobe to make sure that people's existing knowledge of their product translates as easily as possible to the upcoming Molehill version. If you're not already aware of it, Flash Player 11 is going to have an API for using OpenGL and/or DirectX 3D from within Flash. For those wishing to do 3D games and UI in Flash, this is going to be HUGE.
Papervision3D is going through the process of a full re-write to take advantage of CS4's new 3D capabilities. It sounds like they're also looking into mixing Alchemy into the engine to get a really big boost. You can check it out in a bit more detail here.
I've found that the irc channel for PV3D is fairly active and they've been able to answer any questions that I had due to an outdated tutorial or awkwardly documented section of code.
I don't have the reputation comment yet, so in response to David Hanak's comment above about viewport layers, the best use for them (that I've found) is to help with depth sorting. You can assign objects to a viewport layer and give that layer an index. Then tell the render to sort the viewport layers by index. It really helps reduce visual display errors.
AFAIK, Away3D is a fork of Papervision3D. You might be interested in this comparison of their features. It seems to me that PV3D is faster, although this blog entry might be pretty outdated.
What I would like to know is which library will be the first to support the 3D related features of Flash 10. That would mean so much in performance...
The thing is, that papervision has a good community. In long term usage, you should take that into account.
I was the same in the beginning. It was not obvious where to find what. But you should stick with it. I just worked on a prototype: Papervision3d + Jiglib (3d physics for flash, ported from c++) and SmartFox Server = fun mulitplayer game :D
Anyway: this might help: http://papervision2.com/tutorial-list/
the BEST one really is Alternativa3D, but you have to pay them for it. It's the only one that currently supports FP10 features, as we're still waiting on PapervisionX
Personally, I much prefer Away; although it started off life as a Papervision fork, they've diverged a long way since then. Most times I start a new 3D project, I begin by evaluating both (the time elapsed between projects often gives both engines time to go through some pretty major changes), and I always end up coming back to Away - to my eye, the rendering quality is a bit better, and it seems to be easier to Just Get Stuff Done with Away. I've never used Sandy, so I can't speak for that.
I've never had a problem getting support from the Away community - while PV's may be bigger, Away's certainly isn't short of helpful people.
In my experience, PV tends to accumulate whizzy features more quickly - it's probably the more bleeding-edge and technically impressive engine - but Away tends to be more stable, has a nicer API and is easier to hack about with ;)
This is all very much my own opinion, YMMV. Both have their strengths and weaknesses. The best recommendation I can make is to evaluate both and see which works best for you.
I've used Papervision, Away3D, Alternativa and Sandy 3D (you can find tutorials for each here). I personally like Away3D better - it is free and has more features, as well as a Lite version if you just want the basics. I'm especially looking forward to the Haxe version, which might just let you compile stand alone executables in C++ with hxcpp.
Options for 3D in Flash boil down to Papervision3d, Away3D or Sandy 3d Engine. I find the first two to be the best, in terms of maturity, documentation and performance.
In case you're interested, on the blog of my company there is a series of posts comparing those 3D engines for Flash (in Spanish, although you can follow the examples and read the source code in English).
Away3D is the current free champ.
It is in active development, and supports Flash Player 11, Stage3D, etc.
I would also start looking at Blender3D for a game engine in the near future. It's not Flash, but is free, and fairly easy to program. The langage behind it is Python.