Holy Crap , Joshua you can write a book on this ;) well said ... Sent from my iPhone
On Dec 27, 2010, at 1:36 AM, "Joshua Granick" <bulkm...@joshuagranick.com> wrote: > Everyone is always learning. I'd say that its difficult to draw a line to > distinguish when someone is professional or when someone is amateur, but > generally I would say that every project you create makes you more > comfortable with the language (I hope!) and exposes you to more problems and > solutions. With time, you'll be exposed to more and more of the total > possible problems, solutions and applications one could create with Flash. > > Looking back at my own experience, I'd say that the jump to "feeling" > professional occurred when I no longer stumbled over the "how", and became > proficient enough that more and more of my time started surrounding the > "what" ... the "how" was less daunting and more obvious at that point. I'd > say that every developer has milestones as well that they cross that stand > out as proud achievements. I've built a few projects and libraries that feel > that way to me. > > FlashDevelop really accelerated my experience with Actionscript 3. I used > Actionscript for 5 or 6 years before the alpha for AS3 was first released. It > was probably a couple years afterward that things started to really take off > for me. > > In addition to FlashDevelop, using my own code library became a big catalyst > to going deeper with Flash. Instead of writing new code for each project, or > trying to copy from one project to the next, I began using a global classpath > with my own "code library" of re-usable classes and global functions I > started to create. You can set the Project panel to show global classpaths, > so its just as easy to write code in the global location as it would be > within the project. This process helped me to pinpoint code which would be > written in a reusable way, so I started to write my own components and to > develop them further with each project. > > Over time this grew to include a wide variety of useful libraries for loading > files, playing sounds in games, fluid resizing, game character animations, > tweens and eventually an Away3D + Box2D snap-and-build layout framework for > some of my larger clients. Instead of reinventing the wheel, I could improve > on it with each project, helping me dig much further into interfaces, > namespaces, static methods and other language features I wouldn't have > otherwise needed, but that helped me to improve the utility of my code > library. > > > Like the old man insists in Toy Story 2, "you can't rush art." Everything > takes time. To develop work faster is part experience but also partly being > clever. I've heard another person say that he wouldn't want to hire a > carpenter if he were building furniture for a stage play. Fact is, the > carpenter will build the table the "way it should be built," but he can't > afford that. It just needs to look right ... it doesn't need to last forever, > just until the last showing. Part of working quickly is learning the balance > between where you should invest in building things "right", and where you > should allow yourself to fake it, or to be messier. You also learn how to > develop in such a way that you don't box yourself in with poor decisions. If > you set yourself out in the right direction, every step you take can expand > and grow that project. If you make poor decisions, you may have to go back > and rewrite everything. > > If you make a light, give it a light bulb and a light switch. If you need to > switch it off later, it'll be easy to do. You won't have to tear open the > wall to get to the wires. If the bulb goes out, you won't have to replace the > fixture. On the flip side, a toaster on the counter doesn't need to handle > every single kind of bread. If it breaks you can get another one. In the same > way, give yourself "switches" so you aren't stuck with stubborn code (just to > implement a client's change) but don't over-engineer everything. Sometimes > its okay to have a normal pen, and not to make a super astronaut pen that can > write upside down in space. > > > You may be surprised with Flash's performance. Try and approach your project > one step at a time. Get the basics working, then improve on it. If you task > yourself with too many features at once, it may be difficult to think clearly > and move forward. I've used Away3D enough to say that it is solid, and I > think its a good choice for the project you're thinking of. Don't try and > re-engineer the library, though. Let it do what it says it does. If it works > terrible, there may be a bug that someone else wants to fix. You don't have > to fix everything yourself. > > Switching between high and low quality renders and being picky about when you > re-render can make the difference for improving performance. Get your project > working, then refine it more to eek out even more performance. Be careful not > to optimize too early. Get it working, then get it working faster. > > The extra stuff you aren't using shouldn't be slowing Away3D down. Don't > worry. Go ahead and make your custom classes, but also think if there's a > "dead simple" way to build what you want, using the classes that already > exist. For example, you could take your bitmap, cut it into pieces, then use > multiple planes. Levels of detail, instead of being wrapped up in the same > class, could be multiple cubes or sets of faces that you hide or show. When > you pan, you just change the position and rotation of each object > simultaneously. Remember that "big things" are made up of simple, well-built > small things. > > Projects will also run (notably!) faster if you compile for Release instead > of Debug. > > > Please take or leave anything I'm saying here ... I may be repeating the very > things you already know, feel, or are actually doing. If I were to approach a > project like this myself, I would first determine which classes or functions > are already available which may already do (or almost do) what I want it to. > Find Away3D panoramic examples. I would then consider using these existing > classes, extending them, or combining them to add additional functionality. > Like I said before, instead of a complex mesh with multiple faces, maybe use > multiple objects. Instead of getting into complicated circular math, maybe I > would use Point.polar so I could move objects in polar coordinates (which > might be really easy) and to let Flash convert them to Cartesian coordinates > for me. > > If you really want it to do all the features you're looking for, it will take > some time. A good development process, on something that hasn't been done > before (or is complex, and hasn't been done by yourself before), will usually > include a combination of roadblocks, breakthroughs, progress and roadblocks. > Just try and stick to the narrow, straight path that gets you to your > destination, and not to be too distracted by "nice to have" features or > things that are auxillary to your primary goal. It's easier to get from A to > B, building a straightforward solution to your problem, then adding > additional features, than to start with every feature under the sun on day 1, > and trying to get that to a working end. > > > > On Sun, 26 Dec 2010 12:12:55 -0800, rctdeclan <rctdec...@hotmail.com> wrote: > >> Hi Joshua, >> >> What is your opinion on experience? e.g. When is somebody a >> professional developer? >> >> How long did it take you guys to feel comfortable with coding as3, and >> especially understanding precisely how Away3D works?; >> How much projects have you done? >> How much time do you spend on a project per day or per month? >> Do you work in a team? >> >> I'm trying to get an idea whether I'm taking the right steps... >> >> For example this project which I've been working on for more than >> three months: >> >> My goal was to make a Panorama viewer: >> -with multiresolution cubical panorama support >> -with Hotspot navigation >> -Zoomify-like Flat panorama's >> -Panorama video (with VideoMaterial class) >> -Partial panorama's >> -VRObject viewing >> -multitouch >> -optionally using some sort of PHP connection to a database. >> -Lightning fast. >> >> Why? Well I've been making Virtual Tours for almost two years now. >> I've tried several panoramic viewers, but unfortunately, they don't >> fit my needs. (Not-extendable, not as3-compatible) >> >> How? >> -Using Flex MXML for data and AS3 for various pano classes. >> -Using Away3dLite >> >> So I made a plan: >> 1. Read the "3D in Flash" book. >> 2. Dig through the code of the Mesh class. >> 3. Understand materials, and know how to load them at runtime. >> (Partial tile loading) >> 4. Keyboard/ Mouse controls >> 5. Make Multtiresolution Cube Panorama Class. >> 6. Make Hotspot Class. >> 7. Make Partial Spherical Panorama Class. >> >> But I bumped into the following questions: >> -How can I use multiple materials on a Mesh --> Solved; apply material >> to each face individually. >> -How do I know which cube(sub)faces are currently being viewed, for >> loading? >> -How can I update only certain faces in the Mesh class, without >> updating the whole mesh? >> >> >> And lastly, I'm never sure about the speed and performance of the >> flash player. >> If I use the debugger in FB, and I run the code step by step, I don't >> understand how the Flash Player can handle the amount of commands that >> come by every second. >> Does the extra code within Away3dLite's classes (extra code; Lights, >> shaders, etc..) which I don't use have an (Serious) impact on the >> performance? Remember, my goal was to make this viewer Lightning >> fast... >> That's why I'm trying to understand what Object3D.project(), >> ObjectContainer3D.project() and Mesh.project() actually do. (Matrix >> calculations, projection plane, etc...) >> >> >> So my question are: >> -How do you begin a project; Is it similar to the way I started my >> project? >> -How to know if cube(sub)faces are viewed or not? >> -Is it possible to update only certain faces (delete, replace) in a >> mesh? >> -Do you guys have some links to tutorials or pages about how Matrix >> projections are calculated? >> ( I already found these: >> http://www.codeproject.com/KB/openGL/Space_Matrix.aspx >> http://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/video-lectures/ >> ) >> >> Thanks in advance, >> >> Declan >> >> >> On Dec 26, 8:15 pm, "Joshua Granick" <bulkm...@joshuagranick.com> >> wrote: >>> A couple things: >>> >>> - FlashDevelop. Using FlashDevelop instead of Flash (and instead of Flash >>> Builder, in my opinion), is a huge boost in productivity. Instead of having >>> to memorize classes and methods, the code completion and other language >>> features allow you to use the language before its been committed to memory. >>> Over time it becomes more and more familiar, but until then, you can leap >>> into AS3 (and libraries like Away3D) without a lot of study >>> >>> - Maya + OpenCollada. I had a hard time getting into Away3D development >>> (beyond cubes and spheres) because I couldn't find a good pipeline for >>> generating 3D models and importing them into Away3D reliably. Other >>> developers could chime in here, but for all the formats and applications I >>> tried (SketchUp, Blender, Milkshape 3D, Misfit Model 3D) the only one that >>> truly worked for me all-around was using Maya plus the OpenCollada plugin >>> (with triangulation enabled) for exports. Maya is prohibitively expensive, >>> so I'm sure there are other applications that can work, but this was when >>> my experience with Away3D took off. It's exciting when you can create a >>> mesh, use a UV editor to wrap your texture, and have it load correctly in >>> Away3D. Other formats and applications may be different, but in Away3D + >>> OpenCollada, .1 unit = 1 pixel (if I remember correctly). When testing >>> formats, always remember to test with something like a WireColorMaterial, >>> and play with the scale. You may be loading your model correctly, but can't >>> see it because the material isn't appearing, or because the scale is so >>> small or so large. >>> >>> - Class-based development in AS3. If you aren't doing it already, get >>> comfortable with using classes. When learning a language it can be easier >>> to begin with procedural programming (like you would do on a frame, coding >>> in the Flash IDE) but a class-based architecture really pays off in the >>> long run. Using FlashDevelop really helps make this easier (the Project >>> panel is awesome for always maintaining the context of all the files in >>> your project) >>> >>> - Common-sense development. There's also some "common-sense" principles >>> that really help in development. Don't be afraid to use capitalization or >>> long names if it makes your code more clear. It all gets compiled to binary >>> anyway, so you don't do anyone (yourself included) when variables are >>> called "v1" and "v2" instead of "objectMesh" and "objectTexture". It's also >>> helpful to use multiple classes and methods to keep each piece of your >>> complex work, simple. For example, if you have multiple states in your >>> application, it may be helpful to create a "showState" function. That >>> function can then be the authority to making sure everything falls into >>> place. Instead of putting this code in each button handler, make each >>> button handler point back to your central function. It's much easier to >>> debug applications when a specific behavior is always handled by the same >>> code. >>> >>> - Actuate. Use a good tween library -- goes a long way to making your >>> life easier. Animating properties, or pushing numbers around, is an >>> extremely common task in AS3. Use a library that feels comfortable and is >>> reliable. My favorite is Actuate, but (by no means) is it the only library >>> out there. Performance, reliability, and (in my opinion) global control >>> with good overwrite support is essential. If your library supports solid >>> overwriting, it means that you can "set it and forget it" ... even if you >>> started an animation moments before, it will kill the previous animations >>> if they conflict with your most recent instructions. >>> >>> - Mailing lists, Google. Google is a great resource for AS3 questions, and >>> mailing lists can be the best place for library-specific questions. >>> >>> On Sun, 26 Dec 2010 09:46:37 -0800, rctdeclan <rctdec...@hotmail.com> wrote: >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> > Hi guys, >>> >>> > I'm 16 years old and live in the Netherlands. >>> > I'm now coding AS3 and MXML for almost a year. I love coding, and I >>> > love learning new things. >>> >>> > I have a few questions for the pro's out there. I hope you can help me >>> > with getting a better understanding of programming RIA's, and Flash >>> > development in general. >>> > I would like to know how you guys started, and what your visions were >>> > and how you managed (or not managed) to make those visions reality. >>> >>> > Subjects like: >>> > - Away3D projects: How do you start your projects, do you have tips? >>> > - As3: Cairngorm, MVC >>> > And for Rob and Richard: >>> > - where did you guys learn the theory needed to build a 3d engine? Are >>> > there some 3D-related tutorials you guys could recommend me? >>> >>> > Many thanks in advance, >>> >>> > Declan >>> >>> -- >>> Using Opera's revolutionary email client:http://www.opera.com/mail/ > > > -- > Using Opera's revolutionary email client: http://www.opera.com/mail/