<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3489355097399392481</id><updated>2012-02-16T01:05:19.942-08:00</updated><title type='text'>Chris Rackauckas</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://chrisrackauckas.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3489355097399392481/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://chrisrackauckas.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Chris Rackauckas</name><uri>http://www.blogger.com/profile/11997481689460045644</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_aj0X0Bn26Z0/SPVCJNibiKI/AAAAAAAAAE8/1xB_6eG6Ovc/S220/chris-redo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3489355097399392481.post-3545765962310476065</id><published>2012-01-26T19:10:00.001-08:00</published><updated>2012-01-26T19:10:03.952-08:00</updated><title type='text'>iPad vs Thinkpad Tablet</title><content type='html'>Posted this on the forums and I thought I'd like to post it here to make it show on search engines. If you're stuck in the decision process, here's what made me choose Android's Thinkpad Tablet (with the cool pen!) over the iPad.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;Well, I have used both and now the iPad is with my mom and the TPT is with me at college. Why? It's simple.&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;First off, note taking. NoteShelf on the iPad does alright if you want to use a capacitive stylus but there are three problems with it. The first problem has to do with holding your hand up. Doing that a few hours a day will make your hand hate you. Secondly, you have to write in a little zoomed in box in order for it to be legible with a fat stylus. This makes switching to drawing graphs and other drawings for say physics hard, and writing large multi-lined math equations is just impossible when you add fractions. Lastly, those soft tipped stylus's break. You may not have broken one before with light use, but believe me, using it as a pen to take notes like 4 hours a day... you'll go through them. It adds up too. It really adds up once you get picky and want the harder kind instead of the squishy ones... So yeah, this alone made me want a pen and buy the TPT.&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;But were there other perks? YES!&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;So, secondly there is multitasking. I don't know how you can say the TPT's multitasking is in anyway horrible. I love it. There is a little button on the bottom left that lets you switch between open apps. So in class or doing hw I usually have ezPDF reader open with my (annotated) book, Quill open for my notes, and Writepad as a scribble page for solving problems. Swapswapswap. It's an easy two button swap and it works beautifully. Try that on the iPad... these apps actually stay open! Plus sometimes I keep feeds and emails open... hey... I'm not a bad kid! Even the browser works like that. The iPad... you use your app and stay there for the most part. Switching between apps is just a pain. I just couldn't do this.&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;Thirdly, I could never find a good PDF annotator for the iPad. This may not matter as much with the new textbook thing, but I still think it will for one reason. The new iPad textbook thing has an exclusivity clause for publishing, meaning the same book cannot be published elseware. So yeah, no major textbook will be using that for a long time... that plus the $15 cap on the price means publishers are not going there for your real college textbooks. So if you're getting an electronic version, it's probably a PDF. And your problem sets from your professors and their mini/unfinished textbooks they use for your class, also PDFs. You need PDF annotation, and ezPDF on the TPT is a beauty.&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;Fourthly, the keyboard. I got the keyboard case specifically from dealing with the iPad. There are applications where you'd use an on-screen keyboard and there are applications where you'd never want to use one. Writing an essay... you never want to do that on an on-screen keyboard. Just trust me on that. The TPT keyboard in the keyboard folio is just beautiful too. Oh my god, it's a wonderful keyboard that makes typing a breeze. So if you plan on typing at all, bam there it is.&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;Fifthly, along with that, I could not find a decent LaTeX compiler on iOS, whereas there is a pretty good one on Android called VerbTeX. So if you have to write to LaTeX (i.e. planning on doing any math or science in your life ever), that also makes the TPT the winner.&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;Sixthly, I just never liked using the mail systems with iOS. Push mail was just slow and using the Google apps... they weren't integrated nicely. You'd have to enter the app to check mails (unless you got the push mail one, then you'd get a little number showing you the mails like 100000 minutes after it actually arrived). On Android, gmail, google calendar, etc. all work wonderfully and work with the status bar. The moment you get the email you get a little popup on the right saying who it is and the subject line. Love that. You get google calendar notifications too. Yum. It just works beautifully.&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;Seventhly, on Android you can choose much better browsers. Simple. Boat browser win in my book. I love that browser. I had some problems on some websites with the iOS browser. This one always works. Managing forums like my new forum&amp;nbsp;&lt;a href="http://www.realsurviving.com/" rel="nofollow" style="color: #006699;" target="_self"&gt;realsurviving.com&lt;/a&gt;&amp;nbsp;(just launched!!!&amp;nbsp;&lt;img alt=":smileyhappy:" class="emoticon emoticon-smileyhappy" id="smileyhappy" src="http://lnv.i.lithium.com/i/smilies/16x16_smiley-happy.gif" style="border-bottom-width: 0px; border-color: initial; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-style: initial; border-top-width: 0px; max-width: 100%;" title="Smiley Happy" /&gt;), that stuff just never played well. And some blogs never worked well.&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;Eighthly, flash video. You know all of those flash videos for showing you mommentum and such that you use for physics class? Works on Android. Also, this means you can watch things like OCW and the Harvard thing. Yum. I never was a fan of iTunes U.&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;Ninthly, I love FeedR and Google Reader for feeds on the Android. RSS Feeds are just plain dandy to read on my TPT.&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;This is not to say the iPad was worse everywhere. I gave it to my mom because it does have some better games, though now most of the good games were ported to Android and cost less for Android. Also, the Epicurious app for Android tablets is... terrible. But that should change with ICS. &amp;nbsp;The facebook app was also slightly better, but now that it was updated it's about the same.&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: white; color: #333333; font-family: Arial; font-size: 12px; line-height: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;So, there's my comparison and that's why I stuck with the TPT.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3489355097399392481-3545765962310476065?l=chrisrackauckas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrisrackauckas.blogspot.com/feeds/3545765962310476065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chrisrackauckas.blogspot.com/2012/01/ipad-vs-thinkpad-tablet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3489355097399392481/posts/default/3545765962310476065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3489355097399392481/posts/default/3545765962310476065'/><link rel='alternate' type='text/html' href='http://chrisrackauckas.blogspot.com/2012/01/ipad-vs-thinkpad-tablet.html' title='iPad vs Thinkpad Tablet'/><author><name>Chris Rackauckas</name><uri>http://www.blogger.com/profile/11997481689460045644</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_aj0X0Bn26Z0/SPVCJNibiKI/AAAAAAAAAE8/1xB_6eG6Ovc/S220/chris-redo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3489355097399392481.post-7254791022798913203</id><published>2010-07-20T11:09:00.001-07:00</published><updated>2010-07-20T11:09:21.723-07:00</updated><title type='text'>Androidology 101- Where Android Is, And Where Android Needs To Be</title><content type='html'>&lt;p style="margin-bottom: 0in"&gt;Google's Android OS really seems to be a part of the buzz since Verizon started saying “Droid does”. Yes, it did exist long before that, but I'm talking about in the public's eye. To the public, Android before that is like Android tablets as of right now (What, they exist? Yeah, but they really shouldn't in this form!”). Android was able to get here due to some major updates, and it put Android in a good enough position for me to adopt it and even start developing on it.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;However, that does not mean Android is allowed to live without scrutiny. There are many things that Droid doesn't and Droid doesn't do correctly. This article will go from the ground up showing you a full-fledged view of the Android system as of 2.1 Enclair in the change phase for 2.2 FroYo (and if you don't know what I mean when I say that, read on), what the user experience currently is, and how it looks like it's going to change (from a developer's point of view).&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;The Current Experience&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;The bread and butter of what most people really want to know, what's it like right now? However, I caution you to please read onto the next segment after this because the current user experience is only a segway to an insight into what Android is supposed to be.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;OS Age&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;And that is my first point about the Android experience, it feels “young” and “developing”. By this it means that at any given time, new things are happening. Either Google just finished and released a new version of the OS or your phone manufacturer finally decided to distribute it. This has many positive effects for the user experience and many negative effects. The problem and the upside is that both are fairly noticeable to the user.  &lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;One of the main things about Android at its current stage is that each OS update can simply kill a lot of apps. Old ways of doing things can simply become killed, giving a force close (or as comments say in the marketplace “FC”) with a notification of death upon opening that app. You then have to wait for the developer to update the app before it works again. You could pin this on developer practices, but it really does point to a weak/strong point of the Android platform, and that is that it's growing ridiculously fast. As just noted, that can be a pain that leads to apps not working for times up to weeks (of course, depending on the developer, but not many fixed it within a day). However, it's also a strong point. When Android first started for me, the only pinch-zoom could be done in the Dolphin Browser, leading the internet to proclaim it didn't exist. On that same phone, pinch-zoom is in the standard browser now. And so is tethering other Wifi (using your phone as an internet modem by having your computer connect to it by Wifi), live backgrounds, and soon to be flash. All of these weren't on my phone when I first got it. They are free with the updates that Google has for the OS. Of course, I have to always wait 2-3 or months for Motorola to release the update to my phone (unless I feel like rooting the update myself, which a lot of people seem to do) before it actually gets there, but still, updating is updating. And Google has that. I see this as a slight problem right now because the OS is still fairly young, and as the updates get less frequent it will become basically invisible to the user.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Widgets&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;If there's one thing that's representative of Android for me, it's widgets. Much like the KDE widgets that let my stick bouncy balls all over my lab computer, Android widgets let your home screen be magnificently utilized. I have 3 screens: one has news and stocks widgets showing all the most current information without having to open an app (though I can open them by clicking on them) and then a few app buttons for my work, middle and main one displays my calendar, the temperature outside, and the buttons for texting, email, and using the phone. The last one, the one to the right, is my phone screen. Displays the latest facebook updates on the top, has the buttons for my mp3 player at the bottom, and has my game apps in the middle. Yes, I also have an app drawer with 50 apps or so, but who needs to use that when you have 90% of what you do so beautifully laid out? I can literally just open my phone, swipe through the 3 home screens and will have done what I used to go home to go on my laptop to do, namely look at my calendar, read the current stocks and news and check facebook. Productivity-wise, nothing beats this widget layout and Android has done this well. You'd think it would be a memory drain to do this but somehow Android has pulled this off beautifully. Don't think I'm serious? Take an Android power-user's phone and compare his/her home screen to some iPhone users and see the difference between widgets and app buttons.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;The Apps in the Marketplace&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;This is a big deal, how are the apps? And the real answer is, ok. Not exceptional, but ok. Not as many games as the iPhone (more on why and what the solution is later), but it's ok. Simple graphing calculators are ok. CNBC, BBC, Google Finance (obviously), and Engadget apps are all great for news. Docs to Go and Wordplayer give you word documents and ebooks. Then you have what Android seems to love, the special things. There are literally thousands of apps to do niche little things. Want your Droid to use iTunes to sync? Use iSyncer! I use TuneSync to make it happen over Wifi so I don't even have to plug it in. iMusic will let you download songs straight to your phone. There are barcode scanners and barcode keepers. There are many wifi midi devices and guitar tuners for you musicians. Live video streaming? Yes! Games that use the GPS? Yes. So as you can see, a lot can be done with the Android apps, but the seemingly main apps seem to be lacking, and that is what I will talk about next.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Where Android is Going&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;So now you know what “playing” with Android is like. A semi-beta-esque montage of awesome updates, widgets, and a bunch of weird apps that seem to do just about anything. It gives you a sense that Android has a direction, and so here I will answer what that direction is. The Android direction is a universal operating system. Now, let me detail what I really mean by that.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Google TV's Insight&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Who here has heard of Google TV? Maybe you've heard of it, but do you know what it's actually is? What it's like? Google TV is a new attempt at set boxes by putting the power of the internet with your TV. Sounds re-hashed like Apple TV? In a simple look, yes. However, when you really understand it you begin to see what the Android's vision is all about.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Google TV is not like Apple TV because Google TV is an OS with a new framework and UI on top. It can be put into any hardware. And think of what that will do for the market, namely, unification. Look at your DVR, your friend's DVR, and look how they run. Like the OS? I bet you never even considered the fact that those were running an OS and a software that needed to be maintained by the hardware manufacturer. This can lead to things like programmers who don't study user interfaces designing things (that's what I see when I look at my tv guide...), buggy interfaces, and just complete failure.  &lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Now think of this, what if all of these DVRs start having the same operating system? You go to your friend's house and you understand how to work his TV! And it has internet laid out in the way you know how to use. You get a new DVR, and it has the same look and feel, and might even have all of your previous TV apps all laid out to your liking. What you now get is what you know and love, just faster with a larger hard drive. That's the Google TV experience.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;And that gives an insight into the Android experience. You see those car dashboards and media players popping up? Simple cameras with there OS's? New tablets? Those little dashboards inside of weird refrigerators? What if you can just have one account to sync all of those together, and dealing with each of those devices was the same interface. Wouldn't that make it easy for the user? Would that give a large market of opportunities? That's where Android is headed.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;However, let me point out that this shows a weakness of Android, its market. As of right now, the problem that is being seen with tablets is that the marketplace is limited to phone devices with all of the capabilities Google wants (that talk is detailed here &lt;a href="http://www.liliputing.com/2010/07/google-android-tablets-to-get-android-market-access-soon.html"&gt;http://www.liliputing.com/2010/07/google-android-tablets-to-get-android-market-access-soon.html&lt;/a&gt; ). This can leave tablets like the Archos 7 out of the loop without the standard marketplace. This could be devastating to the Android vision.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;But it doesn't have to be. The ability to fix this is already in Google's hands. As of right now, for every app you download, you get a simple screen that details the security of the app, meaning it gives you a lowdown of all of the features that the app needs to run. This is declared in the AndroidManifest.xml file of every application, and without declaring it there, the app does not have the permissions to use those features. All Google has to do is set up its search to be able to filter these qualities and there would be no problem with making apps for things with TV tuners since you won't have stupid users without the device be downloading your app. Not to mention Google really needs to be able to filter the required OS so that way if you know your app only works on 2.0 and above your app doesn't display in a search from a 1.6 device. With these new marketplace search features, Android has no problem moving into tablets, cars, kitchens, cameras, TVs, game consoles, synthesizers, whatever you can imagine because users of that device can use the standard market tailored to their device (even x86 &lt;a href="http://www.linuxfordevices.com/c/a/News/Intel-x86-port-and-Sprint-upgrade-plans/"&gt;http://www.linuxfordevices.com/c/a/News/Intel-x86-port-and-Sprint-upgrade-plans/&lt;/a&gt; !). And that would make Android wow.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Programmers and Compatibility&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Now you're probably thinking, “ok, how is it going to get that widespread? How can you program for that?”. And this is where Android shines, you don't have to retrain developers! There are C/C++ dev kits in the newest version (&lt;a href="http://arstechnica.com/open-source/news/2009/06/android-goes-beyond-java-gains-native-cc-dev-kit.ars"&gt;http://arstechnica.com/open-source/news/2009/06/android-goes-beyond-java-gains-native-cc-dev-kit.ars&lt;/a&gt; ). Many scripting languages have been ported including Python and Ruby (&lt;a href="http://google-opensource.blogspot.com/2009/06/introducing-android-scripting.html"&gt;http://google-opensource.blogspot.com/2009/06/introducing-android-scripting.html&lt;/a&gt; ). A PHP port is actually going to happen soon. This mean that if you program, you can program for Android. How long could you keep that marketplace dry?&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Now to mention the newest developments that excite me in Android, game engines. The Unity 3 game engine (&lt;a href="http://unity3d.com/unity/coming-soon/unity-3"&gt;http://unity3d.com/unity/coming-soon/unity-3&lt;/a&gt; ) is already going to Android and I can speculate that so will Torque since the only official response  I could find was from  before C/C++ ports were allowed (&lt;a href="http://www.torquepowered.com/community/forums/viewthread/83933"&gt;http://www.torquepowered.com/community/forums/viewthread/83933&lt;/a&gt; ). Now they cannot make a claim that the code must be changed to Java, and so the barrier is down. These big game console and iPhone game engines will be coming to an Android near you, and so even though Android was behind before, now they should be getting all of the big releases you see on iPhones. Also, what was lacking before was a great game framework for Android developers (even though most say that using the Android built-in features are good enough, having a simple framework can really boost development!), and I have found some praise in the newest 2.0 release of the Rokon Android framework (basically, the only one I could find too!). With this release, I expect there to be many more games. Android will have the games market.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;But the last thing is, if you are going to have all of these different devices, could it ever be possible for your applications to device independent? Can they really run on a tablet and a phone? A TV too? The answer is yes! This is due to some of the many programing libraries of Android. One the ways that this will work out is the use of dps (detailed here: &lt;a href="http://groups.google.com/group/android-developers/browse_thread/thread/978813b2998ef439/f63e4e51bdb2e2d5"&gt;http://groups.google.com/group/android-developers/browse_thread/thread/978813b2998ef439/f63e4e51bdb2e2d5&lt;/a&gt; ). Basically, if you program with dps, it doesn't matter how big the screen is. Using dps will adjust how many pixels it is depending on the pixel density of the screen. This leads to programs that can be developed for large screens and scaled down to small screens automatically. All that has to work are the drivers made by the device makers.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Android, A Conclusion&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;So I hope that gives you an overview of what Android is, what it lacks, and where it's going. As you can see, most of the main beefs I have with Android look as though they are quickly going away. Marketplace improvements will fix up the problems with OS incompatibilities and the sheer fact that it won't be as young will lead to less updates. The lack of games will be fixed by the new developer kits and game engines. The device independence means that even if you have a iPhone, you will still be using Android on your TV, in your car, and on all of those little things that use and OS. Setup your Google account and every device knows you. This might be scary knowing that Google has all of your apps that you've bought, your Google checkout account, your Gmail, Google Docs, probably even a Gdrive somewhere in the future to keep your storage between your devices, your facebook account synced, and everything else Android does. But the things is, Android does. And Android does go universal. And that makes it easy for the user, and one hell of a killer market.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3489355097399392481-7254791022798913203?l=chrisrackauckas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrisrackauckas.blogspot.com/feeds/7254791022798913203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chrisrackauckas.blogspot.com/2010/07/androidology-101-where-android-is-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3489355097399392481/posts/default/7254791022798913203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3489355097399392481/posts/default/7254791022798913203'/><link rel='alternate' type='text/html' href='http://chrisrackauckas.blogspot.com/2010/07/androidology-101-where-android-is-and.html' title='Androidology 101- Where Android Is, And Where Android Needs To Be'/><author><name>Chris Rackauckas</name><uri>http://www.blogger.com/profile/11997481689460045644</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_aj0X0Bn26Z0/SPVCJNibiKI/AAAAAAAAAE8/1xB_6eG6Ovc/S220/chris-redo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3489355097399392481.post-6996241413612703974</id><published>2010-07-06T11:22:00.000-07:00</published><updated>2010-07-06T11:31:52.515-07:00</updated><title type='text'>So You Want to Develop Games? What Does a Future Game Programmer Need To Know.</title><content type='html'>&lt;p style="margin-bottom: 0in"&gt;This tutorial is made to be an introduction into the “big picture” of what you need to know to be an efficient and successful game programmer. What do I mean by efficient and successful? Well, you CAN sit down with your knowledge of basic C++ and write a game from start to finish, but without using built in APIs of OpenGL/DirectX and skipping other more in depth features of programming like data structures and XML, you are just making your life more difficult and making it take 10-20 longer (or even practically impossible especially in the case of 3D programming). So what I'm here to show you are where to take that next step, what are the “others” that are good to learn and will save you time in the long run, give you links to articles that discuss the merits of the standard and non-standard implementations. I will give specific examples for Android, but you can take these principles (and most of the stuff I talk about) to just about any language/platform since most of the top items I recommend are implemented universally.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Step One: The Programming Language&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt; So, to start, I expect that you know a programming language. If you don't, that's ok. You should be able to understand most of this without knowing a programming language, though it might make more sense since it's written in a programmer's jargon to know some programming. Therefore, I'd suggest you bookmark this, pick up a language (Suggestion of C++ or Java, a good comparison can be found here: &lt;a href="http://en.wikipedia.org/wiki/Comparison_of_Java_and_C%2B%2B"&gt;http://en.wikipedia.org/wiki/Comparison_of_Java_and_C%2B%2B&lt;/a&gt; ) and come back to see what you should learn next (or just skim it first if you really). The next step here is optional but I think while you're in the zone and learning programming languages, just learn the one you haven't: so if you learned C++ learn Java and vice versa. Really, it's not too hard once you've learned one langauge. And I'm not saying learn it to the extent that you can use it as your primary programming language (meaning, you don't have to memorize all of the function/method names that you'd need to call in every case, but you should be able to read it with ease), but learn the general syntax structure and what makes the two different from each other. It will just come in handy when reading online tutorials in anything since they are bound to be in one of these two languages.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt; If you are looking to learn Java, an awesome resource is here: &lt;a href="http://www.cs.oberlin.edu/~wexler/cs150/"&gt;http://www.cs.oberlin.edu/~wexler/cs150/&lt;/a&gt; . It gives a bunch of labs that basically start by walking you through the language and by the end you are programming in an object-oriented style and doing some design for a Go Fish game all by yourself. Couple that with the java trail and you should be pretty javaified: &lt;a href="http://java.sun.com/docs/books/tutorial/java/index.html"&gt;http://java.sun.com/docs/books/tutorial/java/index.html&lt;/a&gt; (I'd start at the “Language Basics” then go back to the Object-oriented concepts at the end). Lastly, learn about applets: &lt;a href="http://www.roseindia.net/java/example/java/applet/index.shtml"&gt;http://www.roseindia.net/java/example/java/applet/index.shtml&lt;/a&gt; . It's somewhat optional but many applications of the java languages such as builds apps for Android and the Web use an applet-like structure and therefore it's good to have down before learning the specific platform (though for the web you can just use the applet).&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Step Two: The Next Step&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt; This is what most of you are here for, the next step. What should you learn next? I will now list a few things as either Recommendations or Mandatory. The Recommendations are ones I highly recommend you to learn and the Mandatory ones are things that would surprise me if you could actually make a great game with good performance without knowing. Each one will have a general marker as to how long it takes to learn.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Mandatory 1: Learn The Basic Web- Quick&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt; This might come as a quick shock. “HUH! I wanna make me some gamez, why would I play around with them internets?”. The answer is simple in a few ways: markup languages (Mls) are important in no matter what you do, it teaches you great UI design concepts, and lets just face the fact that any major game these days has to be distributed or advertized on the web and probably contain some components where information is gained and updated from a web server.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt; What do I mean by markup languages? Well, any language I can think of that ends in ML is a markup language (HTML, XML, MXML, etc). The best part about it is that the general syntax is all extremely similar. Not only that, but they are useful as languages in multiple places. Android has an entire set of tools that make it easier to make GUIs (graphical user interfaces, basically what the end-user sees and touches) with simple XML code. JavaDocs let you format them with HTML. I can think of many other examples, but those two examples itself makes it mandatory for any Android/Java programmer.  &lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt; I suggest that you take up a subscription (or find on torrents/rapidshare if you're a badboy like that... there exist many torrents for these if you're that type) with Lynda.com and watch the &lt;a href="http://www.lynda.com/home/DisplayCourse.aspx?lpk2=47603"&gt;http://www.lynda.com/home/DisplayCourse.aspx?lpk2=47603&lt;/a&gt; . Or you can pickup a book on XHTML like &lt;a href="http://www.amazon.com/Beginning-XHTML-Dave-Raggett/dp/1861003439"&gt;http://www.amazon.com/Beginning-XHTML-Dave-Raggett/dp/1861003439&lt;/a&gt; but there's just something about videos (and I mean good videos) that makes learning a language seem natural to me. With the basics of XHTML/CSS in your hands, reading and understanding this guide to XML will be a breaze: &lt;a href="http://www.w3schools.com/xml/default.asp"&gt;http://www.w3schools.com/xml/default.asp&lt;/a&gt;.. If you couldn't tell, these things are actually pretty short and you should be able to pick it up fairly quickly.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt; As I mentioned earlier, what you will have implicitly learned are general UI design concepts. What is a frame? A table layout? Why save styles in their own page? How should layouts look? A lot of APIs (Application Programming Interfaces, basically the extensions you use to make programming easier and quicker) assume you know what these are, and from learning HTML/CSS you will know these essential features.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Optional 1- Learn a Web Programming Language- Moderate&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt; I stated earlier that many games need the web for distribution, advertizing, and as an in-game element. If you are seriously looking to “go pro”, you need to know at least one web programming language these days. It's ok, it's only a little bit slower than learning your second programming language since it's like learning a new language plus some web specific features. What you will also take home is some general knowledge of databases and SQL syntax which is great in some platforms like Android which has an SQLite database built in and lets you use that to make saving data much simpler than having to serialize everything. Also, in the long run, learning how to make a content management system/modifying a decent distribution (like Joomla or a modified Wordpress) to do what you need just makes it easier and quicker to make and maintain a website (think easy as in it's basically like updating your facebook).&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt; I would recommend either PHP or Python/Django for web. PHP is the standard these days and if you know PHP you for sure can instantly get web jobs. I would recommend the Lynda.com videos for PHP as he walks you right through the language and by the end you will have built your own content management system and know databasing: &lt;a href="http://www.lynda.com/home/DisplayCourse.aspx?lpk2=435"&gt;http://www.lynda.com/home/DisplayCourse.aspx?lpk2=435&lt;/a&gt; . However, at least with where I am doing some work, some people are saying Python/Django is the future. I don't know if it is, but it sure is good. Since Python is almost a standard for scientific programming anyways (it's basically the best language I know for making something quick), there's no point in not learning it. However, the Django Book did not seem that intuitive to me so learning the Django framework for the web may be a little tough. Nonetheless, you can find Python here at Dive into Python (&lt;a href="http://diveintopython.org/toc/index.html"&gt;http://diveintopython.org/toc/index.html&lt;/a&gt; ) and the Django Book at &lt;a href="http://www.djangobook.com/en/1.0/"&gt;http://www.djangobook.com/en/1.0/&lt;/a&gt; .&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Mandatory 2: Learn Media and Media Tools- Long&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt; Games are a work of art. Therefore, you need to learn the art. What do I mean by “media tools”? I mean sound design, bitmap editing, vector drawing, animating and motion picture tools. By media I mean the arts of anything sight and sound. Yes, these are the basics of any game that sells these days.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt; There are two ways you can approach this: either start from the art or from the program. I started from the art. I did personal recording years, did some stock photography, and make some videos for school projects before. I think this is good since it gives you a good perspective for you to know what you want the computer to be able to do from a design perspective before you ever touch a computer. However, if you don't have that background, it is perfectly fine to just learn the programs and from that learn the art of computer media.  &lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt; In your programming introduction, you probably learned what concern I am addressing here. When designing your first graphics (maybe making a drawing of some sort), the first thing I thought was “holy crap! Do they actually do this for the entire game?”. The answer is simply, no. Normally the big game corporations have an artist draw characters in a modeling suite like Maya and then a programmer implements it and programs some game logic for it. Or even by yourself, just using photoshop to draw a picture and then using it to tell you the pixel coordinates of the polygon so then you know how to program that kind of picture. As a game developer is it essential that you know these tools at least in a basic sense? If you have an artist friend, probably not. But if you have any curiosity/want to make simple changes yourself, YES. It's essential. Not only for the tools, but by learning the tools you learn the art concepts like DOF (depth of field), audio compression (and not compression like MP3s, but dynamical compression), when to use a bitmap and when to use a vector drawing, and what's possible and impossible with computers, all of which make it easier to communicate with your studio artist if you ever get one/work with one in a game design environment.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt; So what are these tools? Well, I can say quite simply that the Adobe Production Premium Suite has everything you need. Premiere for videos, After Effects for any video effects and compositing, SoundBooth for audio, Photoshop for pictures, Illustrator for vector drawings, and a few extra goodies like OnLocation and Flash Catalyst. My only qualm with it is that it's missing Dreamweaver (a great WYSIWYG, “what you see is what you get”, developer for websites) and inDesign (more on this one later. However, it can be a little costly if you want to be proper and not torrent it, it can cost $1,700. Ouch! With a student license however, it's down to $450. And if your educational institution already has a licence (which it probably does), you can get it installed for free with their license. So, if you have a way of getting it, this suite is really all you need. Also, the Lynda.com library covers every Adobe product so it's literally watch a video and now you can add Audio Engineering to you resume (but don't overdo it, it's still only basic audio engineering) &lt;a href="http://www.lynda.com/home/ViewCourses.aspx?lpk0=74"&gt;http://www.lynda.com/home/ViewCourses.aspx?lpk0=74&lt;/a&gt; .&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt; If you cannot afford to pony up that kind of money, there are always free alternatives. Audacity for sound, GIMP for photos/vector drawings, and I don't know for videos (maybe someone can tell me?). I also believe there are Lynda videos on each of these. However, just know that there is something about the Adobe integration that is missing. Also, there are other alternatives that can be better in some circumstances. I still use Sony Vegas for many videos and I stick to Cubase for my music. So don't feel forced into Adobe. It would also be good to maybe know or have played around with the big media industry products of Avid and Pro Tools. If you're on a Mac you might want to give Final Cut Pro and Logic a try. There are options. However, you should get at least one set of tools and learn them, and when I mean learn them I don't mean superficially learn them like every kid with a Myspace says they know photoshop, I mean learn them from videos so you know the ins and outs, every feature, and the jargon associated with the discipline. It will come in handy because remember, these tools are what you are going to use to design your buttons, characters, logos, covers, sound effects and maybe even websites, promotional videos, and animations. Don't things sound important to games?&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Lastly, if you're doing anything 3D, you probably want a 3D modeling program. I haven't done too much in this field but I do know that Maya is one of the standards, and with the Lynda videos I learned it in a day. So that is something to think about. If you're a programmer, you probably won't be doing both the programming and media for 3D since 3D projects get pretty big, but I think it's good to know both sides and if your designer made a little mistake there no reason to not know how to do a minor touch-up.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Optional 2- Print Designer - Quick&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt; I said I would mention inDesign, so what is it? It's a publishing program, or a print designer. It's made to make designing articles for print easier. Everything from magazines, books, and manuals use it. So if you're going to make a PDF manual for your game or want to make some advertizing articles, it's best to learn a publishing program. I chose inDesign because I already had Adobe on my computer when I was going to publish my book, but Quark Xpress is another well known option. It really doesn't matter. Both have Lynda.com videos for them. Just pick it up and it's a new skill. Besides, it might save you $5000 in the long run from having to send out your Word document manual to some overpriced dude who just uses one of these to set it up for a print shop.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Optional 3- Terrain Design/ Game Engine– I don't know&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt; So, I haven't used one of these so I wouldn't know for sure, but I know another option is to get a game development engine like Unity (&lt;a href="http://unity3d.com/"&gt;http://unity3d.com/&lt;/a&gt;), XNA (&lt;a href="http://creators.xna.com/en-US/education/gettingstarted"&gt;http://creators.xna.com/en-US/education/gettingstarted&lt;/a&gt;), Q (&lt;a href="http://qdn.qubesoft.com/"&gt;http://qdn.qubesoft.com/&lt;/a&gt; ), Panda3D (&lt;a href="http://www.panda3d.org/"&gt;http://www.panda3d.org/&lt;/a&gt; ), etc. A lot of these have the development tools to get you around having to know about media design and have textures for you to build characters and scenes specifically for games. However, even these can benefit from you learning how to use the media tools in the first place (since they can many times import standard files) and can be closed off to specific platforms. Therefore I think of them as supplements to media tools but not replacements. In fact, if this seems more like your style of programming, you might want to look into modding communities like the ones for Warcraft 3 and soon to be for Starcraft 2. In  Starcraft 2 map developers will actually have the ability to monetize map making!&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Mandatory 3- Algorithm Design and Efficiency – Quick for a simple understanding, but Long for a good understanding&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt; Don't think you can ever know this entire field, but you can at least learn the basics. What is big-O efficiency? How do I compute it? How do I use data structures properly? What are the most efficient algorithms for doing this computation? In game design, you need efficiency, and to get it you need to know a little about algorithms. I don't know of a good source online for this stuff so I'm actually going to make my own thing on this, so stay tuned!&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Mandatory 4- Graphics/Sound API - Moderate&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt; It seems like it doesn't matter which one you learn, but to get graphics programming quickly and efficiently, you should know the insides and out of a graphics API. The differences between DirectX and OpenGL are everywhere, but I think the best argument for OpenGL is here: &lt;a href="http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX"&gt;http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX&lt;/a&gt;. Basically, if you know OpenGL, you can put graphics on just about any device from Android phones to Windows computers. Not to mention the fact that by learning one, even if you aren't a graphics programmer, you at least know what methods calls are made. Also, the article mentions a lot about the fact that the APIs generally have the same methods, so if you know how to write for one you know at least in general what you have to do to program for the other graphics API. Same with sound, though I'd give the trophy to FmoD because it's really popular, but you'd be fine with OpenSL (which usually comes with anything that implements OpenGL ES) or OpenAL.  &lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt; These are basically your backbone between the “media tools” where you draw it and mix the sound and actually programming it into the game. You can use library specific tools but these are specially made to be cross-platform and powerful to the extent that it makes programming in any language easier (and even boosts performance since these languages usually will use GPU acceleration and other advanced features).&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Optional 4- Game Library - Quick &lt;/p&gt;&lt;p style="margin-bottom: 0in"&gt;Whether it be the Lightweight Java Game Library (&lt;a href="http://www.lwjgl.org/"&gt;http://www.lwjgl.org/&lt;/a&gt;) or one that's built into the platform, learning libraries can be easy ways to cut down on code by using pre-made methods. Look into what's commonly used for your platform. I know for Android many people just use Android's own library for most things, but for C++ on a PC you may want something more powerful than the standard library.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Mandatory for 3D and Recommended for All 5- Math and Physics - Long&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt; Vector transformations, linear algebra, Fourier transformations, algorithms, gravity, resistance, calculus to find work, cross and dot products, etc. all come into play in games and graphics. Many libraries have things to do a lot of the calculations for you, but you need to know when to do what calculation just so you can get it done. Check out MIT OpenCourseware and Khun Acadamy as online video resources for these as necessary. It's just tough to get by making realistic simulations with no knowledge of physics and the math to make a projection of a 3D environment onto a 2D screen. You don't need to know it all now or learn it just this second, but you will need these a lot and it can make things much easier.&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;And last but not least:&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;Mandatory 6- Learn Your Place – Quick to Long&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in"&gt; Are you good at the math to do the underlying transformations? Maybe your place is as a game engine developer. Are you more of an artist? Look into more of the media side. Are algorithms your thing? Maybe your place is with game logic. The point I'm making here is that in the end, you usually find your niche. You may start doing your own games from start to finish, but you will notice it may have it's flaws. For me it's always the fact that I'm not an artist and cannot draw. Over time what happens is you get friends involved and you source out parts of the project to them and it becomes a development team, or you join a development firm. Either way, most people won't be developing the full game from start to finish on their own for long. That's ok, that's why object-oriented programming and tools for artists were made. Now you know how to do each step (if not well, at least you know what's going on), and you will be able to be a vital part of any development crew you join in whatever position you end up in. Have fun on your game design journey!&lt;/p&gt;&lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in"&gt;Notes about the post: I am a mathematics and data modeling epistemology student at Oberlin college. I have taken dabs at game design due to the close proximity I come to them with the modeling I've learned. Because of it, I've been able to learn the programming aspect, the media aspect, the math/physical background, and the graphics. I also work as a Database/Forms Manager for Oberlin's Office of Residential Education, maintain their website and do free-lance web development. This post is a compilation of all of the tools/materials of the field that I have had to consider learning/ actually learn in order to finish projects in a reasonable manner. Most of the suggestions I give come from what I eventually chose as my way of solving the problem / the standard way of going about it. Most of my decisions here contain links to articles that discuss the merits of each tool. If you have any questions, concerns, comments, or disagreements with the tools discussed, feel free to leave a note in the comments section. Thank you and I hope you will make good use of the information given.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3489355097399392481-6996241413612703974?l=chrisrackauckas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrisrackauckas.blogspot.com/feeds/6996241413612703974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chrisrackauckas.blogspot.com/2010/07/so-you-want-to-develop-games-what-does.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3489355097399392481/posts/default/6996241413612703974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3489355097399392481/posts/default/6996241413612703974'/><link rel='alternate' type='text/html' href='http://chrisrackauckas.blogspot.com/2010/07/so-you-want-to-develop-games-what-does.html' title='So You Want to Develop Games? What Does a Future Game Programmer Need To Know.'/><author><name>Chris Rackauckas</name><uri>http://www.blogger.com/profile/11997481689460045644</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_aj0X0Bn26Z0/SPVCJNibiKI/AAAAAAAAAE8/1xB_6eG6Ovc/S220/chris-redo.jpg'/></author><thr:total>0</thr:total></entry></feed>
