Brick Walls
by Paolo on Mar.21, 2009, under Meanderings
I think I’ve made it past the wall. Now I just have to tweak the game to make it challenging and hope that it remains fun to play. But I’m glad that I pushed through. It has been a long journey for me, coming to this point in my life. I’ve always wanted to make computer games since I was a child. But I’ve always had this block that I wasn’t smart enough or good enough to do it. So being on the verge of publishing my first game is an exciting moment for me.
It doesn’t matter that the game is fun or not. I hope it is. And I certainly hope that I place. But I’m just happy to finish and to show people the fruits of my labor – especially because I know I’m only going to get better.
I thought that I had already posted this video, but I had not. This is a video of the late Prof. Randy Pausch, who was one of the inspirations for me to finally get up, and put in the time and lose the sleep to make my dream come true. This is something I believe that every indie developer – that every dreamer – must see.
For me, the line that spoke to me the most was when he said,
“The brick walls are there for a reason. The brick walls are not there to keep us out; the brick walls are there to give us a chance to show how badly we want something. The brick walls are there to stop the people who don’t want it badly enough. They are there to stop the other people!” – Prof. Randy Pausch (1960-2008)
March 22nd, 2009 on 4:51 pm
Inspirational. Congratulations on getting past the wall. When do you hope to have it finished?
March 22nd, 2009 on 8:10 pm
I believe I should have it done by next weekend – about a week before the deadline. I’m giving allowances for adding in the MochiAds API, and for them to approve the game.
And besides, if I’m using their version control, I can keep tweaking it until the contest end date on April 3rd.
Are you in the contest too?
March 24th, 2009 on 6:12 am
Awesome. No, I was thinking about it before they took the emphasis off 3D games. What’s the FreeSpin API like, by the way? I’ve heard mixed opinions.
March 24th, 2009 on 7:15 am
On a very simple level, the FreeSpin API is just a component like a textbox or drop down list. Each model fits into a designated are on the screen and you have some limited abilities to rotate, scale and animate the actual 3D object in the timeline. However, there are limitations on the smoothness of the animation when manipulated in the timeline. For instance, objects are animated in 10s of degrees regardless of how many frames there are between a rotation.
Using Actionscript, you can get very smooth animations in fractions of degrees but at the cost of slowdown or dropping frames. I’ve actually had to cut back on using the smoother 3D animations for the sake of gameplay and use the regular 10s of degrees to get the performance I was looking for.
And because each 3D model is treated like a separate component, you can’t really get true z-ordering of n-number of 3D objects without doing it yourself. At least, from what I’ve learned about the API, there is no z-ordering. And if the objects are high in polygon count, you’re going to get slammed in CPU cycles.
Another problem is that there is no actual “camera” to control. Again this is because you are manipulating a 2D component with a 3D object inside. So if you move the object to the upper left of the screen, you have to program the proper rotation and angle to fake the camera’s perspective.
I don’t know what to say about “mixed reviews” because I had no expectations when I started working with FreeSpin. It is a pretty powerful component and is an easy way to add a true 3D model to Flash in a component container. But if people were expecting a true 3D engine, I can understand their frustration and disappointment.
Personally, I think it can be a pretty powerful tool with the right imagination. And I hope to display my results very soon.
March 25th, 2009 on 6:41 am
Thanks for that
It sounds like a pretty decent tool, from what you’ve just said. I guess people are comparing it to Papervision and getting disappointed — but it’s not supposed to do the same thing!
Looking forward to seeing what you’ve made with it.
March 25th, 2009 on 8:33 am
I’ve never used Papervision so I don’t have that mind-set.
If you have time, I’d really like the opportunity to kibitz with you on how I can better improve my code as a “post-partum” for my game. The main Document class has become an ugly mess. I really need to look into some design patterns to clean up the code.
Also, I tried clicking off “Export on First Frame” and suddenly I’m getting compile errors in the AS3 that it can’t find the classes. I have the background music as a class so I can dynamically adjust the volume during gameplay. And since it is Exported on the First Frame, it kills the pre-loader I made. But at the same time, if I unclick “Export on First Frame” all the functions that say “new BackgroundMusic()” cannot find the reference type.
Any help would be greatly appreciated!
Paolo
March 27th, 2009 on 5:52 am
Sure, that’d be great!
Hmm, sounds like the music isn’t on the timeline anywhere, so it’s not being included in the SWF. Are you using an AssetHolder symbol to hold all your MCs, etc, and putting that on the second frame? If so, you can create a new layer within that symbol to hold your background music, then drag and drop the sound file from the library. That way, it’ll get included in the SWF along with all your graphical assets.
Hope that helps
March 27th, 2009 on 7:24 am
Hi Michael,
I just realized my mistake last night with my latest build. I had to read your post very carefully and slowly.
Once the game is done, I’ll unlock the private iterative builds. I was sure to credit you with the fix.
Now the only problem is that I have one class that has a sound that must be an Event. So if I put it in the AssetHolder, it fires the sound once pre-loading is over when I don’t want it to. And even though I move the AssetHolder to a frame I am sure is not being played, the Event sound still is being fired.
I guess the real way to solve it would be to change it from an EventSound and call it from code like I do the rest of the sound.
Again thanks for the help! Can’t wait to show you the final product.