What is the best Actionscript3 3D Engine? - actionscript-3

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.

Related

How to begin with game development using basic concepts?

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 :)

which web framework gives more functionality for free?

I'm using codeigniter for a little time and I find it really good, but sometimes it's difficult to find pre-cooked examples on the web that will guide me on what I want to do...so my question is which web framework(independent of language) will offer more examples, better tutorials and more resources in general?thanks in advance
Have a look at this wikipedia comparison of frameworks to see what they support out of the box (resources).
As to user base / documentation / useful examples: it depends on code that you can easily read as well. Have a look at:
http://static.raibledesigns.com/repository/presentations/WebFrameworksOfTheFuture-FlexGWTRailsAndGrails.pdf and https://equinox.dev.java.net/framework-comparison/WebFrameworks.pdf also compare frameworks.
I personally use the MS family, and I am satisfied.
I would strongly recommend CakePHP , it has alot of examples and really nice documentation.
It has a very nice way in handling models relationships
I'd recommend you have a look at the following, categorized in no particular order, with their language of implementation and support in brackets. They all present rather clean and novative aspects, but I don't think there's any real silver bullets. Just lots of very nice bullets depending on what you aim for.
The Laureates are...
Lift (Scala, Java)
Play (Scala, Java)
SeaSide (Smalltalk)
Ruby on Rails (Ruby)
Grails (Groovy, Java)
Yii (PHP)
Wicket (Java)
Others
There are other ones, but these were the ones that struck me a blow the first time I saw and experimented with them, and which have - in my opinion - brought some innovation to the scene in general or to their platform in particular.
Note that this isn't to say that some other frameworks may have been equally significant, but I merely list relatively recent and modern ones, and most importantly ones that I will still consider to write a modern web-app (in the general case).
Feel free to look around for more (and maybe add them in comments or edit this answer).
A few notes...
Play is indeed fun to poke around. Yii is the only PHP framework I'd touch with a very long pole (maybe CodeIgniter as well, granted, but I find Yii cooler and less of a hurdle to use and to work through). Rails/Grails are obviously on par. Wicket is something you'd want to consider if you are in a Java shop that's relatively restrictive and doesn't want anything ultra-exotic, but still enough on the edge.
But mostly, I'd recommend you have a look at Lift and Seaside, if you want to see something truly amazingly well thoughout and for the highest feature-per-LOC ratio. (Oh, and it's inspired partly by Seaside and Wicket, and designed by someone who had to work with a lot of (g)rails web-apps, so that sums it up. Plus Scala is an amazing language, granted you can use it and its underlying platform...)
This is an old question, but what the hell, Just came across it...

This Question about how do i learn from basic As3 to advanced as3

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.

ASAP library for Actionscript?

I'm always open to using new frameworks, especially if they allow greater flexibility when the need arises to make changes and additions.
At the same time I don't want to add an additional layer of complexity unless it's use is warranted.
Has anyone used the asaplibrary recently on a project? Was it useful? Would you use it again?
I've never used asaplibrary (simply because I didn't know it existed), but from a quick overview of the documentation/reference, it looks quite useful. NotificationCenter is neat all by itself.
That said, I would be hesitant to use all of its functionality without weighing other libraries against it for performance (i.e.: It has some animation functionality, but you'd be silly not to be using TweenLite/TweenMax/etc. for that task).
i suggest you to look into splinklibrary, splinkresource and deepsplink as i am the author of these libraries/frameworks.
At disturb most of the projects we used to do in as2 were done using ASAP. OOP friendly in a way no many other as2 framework were. We haven't used much of it in as3, as some projects use PureMVC, Cairngorm even or tiny bespoke MVC implementations.
I am not up to date with the as3 version as I said, but I hope is as good as the as2 one.
Gaia caught my eye lately though, it seems to integrate nicely with the IDE as well.
This might not be that useful, as I didn't actually answer you question and pointed you to a different framework, but these are my 2 pence.

how to get into game dev(part time)?

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!