Google I/O 2014 Begins [updated]
It's painful to see all these incredibly complex things, but not see the addition of basic undo support for native text editing widgets in Android.
Please Google please, make all native gui elements/widgets support undo. Pretty much every other platform/toolkit already does! (See Qt as one example, or perhaps iOS.) Get the basics right first, then go for the complicated stuff.
The issue tracker has this mentioned several times and it's just not getting the priority and attention it should be getting.
Ask Slashdot: Best Language To Learn For Scientific Computing?
>> Python and C++, because numpy/scipy can't do everything
Yes, definitely true, and it's actually pretty easy to use them together.
If you don't want to write C++ however, there are a couple other options:
Cython - basically let's you generate c/c++ by writing Python like code and is very easy to use interacting with Python. It keeps the Cython parts of your code super fast, like straight up C.
Pypy - a super fast version of Python. If you write Python code yourself, and don't use off the shelf Python stuff, Pypy is crazy fast. (About C speed in my own tests of doing C like things.) Pypy gets slower if you use a lot of other Python code that wasn't written with Pypy in mind, but even then it's still normally much faster than regular Python. Using Pypy, you might just be able to write all the code in it and not have to bother with anything else.
Both of these are easy enough that you can be up and running, writing/using new code, same day as downloading.
Finally, even if you are calling other code from C/C++, there's some new tools to make that easier. CFFI is a good example. It makes calling C/C++ pretty easy. I'm not sure how ready it is for a lot of real world use though.
Microsoft Blocks FSF Donation Website As a 'Gambling Site'
I'm Canadian, and upon reading that part I burst into laughter loud enough that people are now asking me what was so funny.
Unity 4 Adds Linux Support
As response to the above I can confirm that Unity is very much used because of the development environment, ease of use for 3D artists, and an incredibly simple tool chain that lets you target many platforms with one codebase. Art assets can be shared between platforms as well, or specified per platform.
For these reasons, Unity is used a lot at small studios, particularly where gameplay is the main focus and the technology doesn't have to be cutting edge. Systems like Unreal and CryEngine are more powerful from a technology and graphics standpoint, but are not nearly as easy to use for small teams of developers.
In particular, Unity's documentation, specifically its scripting documentation, is outstanding. The documentation for other systems is extremely rough by comparison.
I have no affiliation with Unity3D, other than the fact that I've used the software in the past and like it. I know the facts I mention above because I've done consulting and training for many local game studios, many of which have used or are using Unity3D. Also, hundreds of my students currently work in the game industry (many in Vancouver BC) so I often hear about what's going on in local studios.
Ask Slashdot: What Language Should a Former Coder Dig Into?
I agree that Python is a great choice.
Python is perfect for someone in your situation because it is very easy to get into, and you have room to grow with it, since it can be made to work as fast as you need it to.
Keep in mind that there is a good chance that you will find you never need to code anything in C or C++ for speed reasons. Python could turn out to be "fast enough" for everything you want to do. You'll probably use libraries to do the heavy lifting, and they are probably already C or C++ based.
However, when Python isn't fast enough, it's pretty easy to write 95% of code in Python, profile your code, find the slow parts, and then write the really CPU heavy stuff in C or C++. Getting C and C++ code working with Python is pretty automated these days. In fact, Python even has "cython" available which is essentially C coding with a more python-like syntax. (It can compile to C).
For an IDE, you can use Eclipse and PyDev. Both are entirely free and excellent. There are plenty of other free tools as well.
For GUI development, you have easy access to the best GUI toolkit on Earth, QT. The Pyside project provides the official binding to QT, and the bindings are excellent. QT is used in incredibly complicated software such as Autodesk Maya, so it's not just for small stuff. At the same time, it takes about 5 minutes to write a fairly simple but useful application using QT and Pyside. (As an example, a GUI for wrapping the functionality of a command line program.)
Another great thing about Python as a language is that you pretty much never run up against a wall. "No, you can't do that" is something you almost never hear when people ask questions about Python. It's more often, "no, you *shouldn't do that.... but you can if you want".
You'll save so much time writing apps in Python that you'll have hours and hours of free time to spare optimizing the slow parts or adding new features. As a personal example, I'm comfortable in other languages as well, but I can make working apps about 5 times faster in Python than in C# or Java, just because there's less code to write. Assertions and test driven development can make the code just as robust as other languages with compile time type checking.
PS4: What Sony Should and Shouldn't Do
I second that. Wii works great for FPS games. Even if it's not as good as a mouse and keyboard, it's better than analog sticks, (since you can instantly point to where you want without overshooting) and it's *way* more fun. There's something about holding and pointing the Wiimote, as if it is a gun, that makes the experience far more gratifying. It made Golden Eye fantastic. Also, I've replayed Quake and Doom on the Wii Homebrew channel, and I've had much more fun than I did playing them the first time on PC.
Obviously it's very subjective and personal, but if you haven't tried it, it's definitely worth a shot.
Ars Thinks Google Takes a Step Backwards For Openness
Simply pass the request on to the OS's media layer. That way any format the OS knows how to play, you play.
A lot of browsers have been able to do this for years, and if every browser and OS had a free open standard that content browsers could bank on being present, then it wouldn't be a problem. The problem now though is that a content developer can't be sure that the codec used is installed on the end-user's system.
By requiring Flash, the developer gets around the problem since the developer can safely assume that Flash will have the same codec support everywhere. Of course, Flash is bad for the internet since it isn't a free and open standard, which is why we are dealing with all this WebM stuff now. We need a format for video that is equal to PNG/JPEG in term of freedom and openness.
*Imagine if there were no image standards for the net* if images were just left to the OS. We'd constantly be downloading new image codecs, or we'd run across images pages where we couldn't view the images. I think everyone can agree that would be awful. Video deserves a free and open standard just as much as images do.
Hopefully this is useful to someone. A lot of posts I read seem to come from people unaware or misinformed of these basic issues. (I probably should have included this in my last post but I hadn't thought of it yet!)
Ars Thinks Google Takes a Step Backwards For Openness
Free and Open Source software is fundamentally incompatible with "Free as in Speech" but not "Free as in Beer" standards. (At least from a distribution perspective.)
When people say we need a standard that is free and open they mean both "Free as in Speech" and "Free as in Beer". Anything else puts Free Software at a disadvantage.
Giving up on the argument that standards should be both open and free of charge means giving up on Free software as a whole, which I for one am unwilling to do.
Ars Thinks Google Takes a Step Backwards For Openness
Chrome was created to make money *indirectly*. The Chrome browser itself will probably never actually make money, but if it encourages increased internet use and increased ease of development for the web through free open standards, then it will increase Google's core business.
Regardless, it shouldn't even matter if Google does somehow make money from this. A widely available free open standard for internet video is a huge net win for everyone. The only people it could possibly hurt are those who currently make money from licensing, or benefit from the disadvantage that Free Software has in not being able to legally incorporate patented technology. Every argument I've seen presented against WebM and for H264 is short sighted, and fails to take into account the long term implications. Once such argument being: "Devices support H264 and not WebM" when clearly, future devices could easily support WebM at no licensing cost. Another argument being that WebM isn't good enough, which fails to take into account its rapid pace of improvement, and the fact that since there are patent free legal open source implementations, new versions of the standard can continue to progress freely.
Arguments in favor of H264 also ignore the disadvantage that it imposes on Free Software. Such a disadvantage is not acceptable for an internet standard. Hopefully once enough support gets together for WebM, the W3C people will incorporate it into the official web standards.
My guess is that the people at Google realize that we're *never going to get* a ubiquitous high quality free open video standard for the web *unless* they really put their foot down on this issue. This action directly benefits me, and it benefits nearly all other web users long term. If the decision benefits Google too, I'm OK with that.
Examining Indie Game Pricing
I buy a *lot* of indie games. Most of them have free demos. Simple answer, yes, I am far more likely to buy a game after playing a demo. It raises my confidence if the demo is good.
If there is no demo, my confidence is fairly low. I would need to read a lot of very positive reviews before buying.
What 2D GUI Foundation Do You Use?
I second the parent post. However, in my opinion, OpenGL only is pretty tough to use. It takes a lot of knowledge. (GLUT can help to get you started.)
Where OpenGL would require you to program too much functionality from scratch, I personally recommend QT, using OpenGL only where you need it. QT is easy to learn, easy to code for, provides *tons* of functionality, and it performs great. In fact it performs well enough for very heavy 3D animation software to rely on it. (Maya has now been rewritten to use QT, and it is a big improvement.) You can paint your own custom anything, and even easily integrate 3D into your project. I really can't say enough good things about QT. It is now available under the LGPL, so you can use it for open source or closed sourced projects.
As mentioned above by the parent, QT isn't lightweight, but it isn't a pig either. You can use as much or as little of the toolkit as you like, and it can run very fast and have very low overhead. It is light enough that Nokia is using it as their primary development framework for mobile apps with their upcoming Meego based phones. From my personal experience QT flies.
Also, I've had great results with PyQt and with PySide. PySide is the new, "official" binding for QT on Python. They have examples in their demo folder of custom canvas based applications, and they work great and are easy to follow. You can have your own similar program, written from scratch in Python, up and running in 10 minutes.
It should also be noted that because QT works so well cross-platform, it has a huge advantage over toolkits that are tied to a single operating system. (Particularly those from MS.) In my own work, I won't even consider using something that doesn't run on Windows, Mac, Linux, and potentially more operating systems. I use all kinds of devices, and I don't want to be tied down. QT makes cross platform development straightforward, and software like Autodesk Maya is proof that it works even for highly complex projects.
I know I'm starting to sound like a salesman, but my experiences really have been that positive. About the only downside is that there aren't current C# or Java bindings for it. This doesn't matter to me though, because I've got C++ where I need performance and Python where I want ease of use. (With Cython, you can easily have performance and ease of use at the same time.)
I hope that helps.
Teaching Game Development To Fine Arts Students?
I'll try to provide some useful advice. I have been teaching 3D graphics and game development for 12 years, and most of the major game studios (including EA, Ubisoft, Blizzard, and more) now employ at least one of my students.
Students of mine have had great success using UDK. I highly recommend it. There are plenty of tutorials on the main site student can watch to quickly learn how to use it. The learning curve is quite easy. Students of mine have been able to create nice looking content on the same day they were introduced to the software.
In particular, what's great about UDK is that it allows non programmers to create Gameplay logic, because of its visual scripting system. Many of my more artistically minded students now use UDK to create their demo reels since UDK is capable of such high visual quality.
Unity3D is also a viable choice, however, it is much more work to get a high-end game up and running because most of the gameplay programming has to be written from scratch. At the moment it is also lagging very far behind UDK's visual ability. Unity has nothing that comes close to the "lightmass" global illumination system in UDK, which can be used to create fantastic looking levels.
UDK's weakness is that for gameplay development, it is quite hard to make a game totally different from the sample game it ships with. ("UdkGame") Programming for UDK is much more difficult and programming for Unity or most other systems. This is mostly because the UDK API is poorly documented by comparison, and UDK isn't supported in the same way as the full Unreal Engine.
If you are looking for an open source or linux based program, Blender can be used. The newest beta version is actually quite powerful. Blender has a game engine built in and it allows students to create visual "logic bricks" but also to program their game using python. (Of all the languages I have taught, students new to programming consistently pick up Python the fastest.) The Blender game engine Python API is well documented and easy to work with in my experience, though it does have some limitations, such as not being able to create new logic bricks on the fly, or being able to get a reference to a logic brick that is not "connected" to the currently running script. Fortunately, Blender is open source, so you could fix these issues yourself if you needed to.
Also, as another pieces of advice, you should decide on whether you want your students to focus on gameplay or graphics (or if you want to be able to give them the choice). Either one is a valid choice, but tudents tend to specialize in one or the other, and most students don't have enough time to get really both at both.
If you would like to discuss anything further, please contact me, I'll do my best to help.
You can read more about my teaching at: http://www.teaching3d.com/wp/?page_id=210
DRM-Free Game Suffers 90% Piracy, Offers Amnesty
I emailed the developers, to let them know that the fact that their game was DRM free was an important buying decision for me.
They sent me this reply:
thanks for your feedback. We don't even think about using DRM... Don't worry.
The Evolution of Python 3
They will matter a little bit. Some very basic things (like the way the print function works) have changed. However, there's plenty of information on their website, and they've made tools to make migration easier. Those little problems should be easy enough to work around if you use 3.x, or you could keep using 2.x for a while until everything else catches up.
What's the Best Video Game Download Service?
I used Good Old Games today. I was pretty happy, because it worked instantly and no fuss. Even came with pdf manual and mp3s of the soundtrack.
The game I got was descent 1 and 2, replaying those games reminds me that its not just nostalgia, the games were actually great. I've played similar games since, but even though they have better graphics, they've not been better games. The early descent games *nailed* it.
Also, I was impressed at the way it came with a pre-prepared version of dosbox, so it ran right away, no hassel. Very worth the purchase price, and the lack of DRM sealed the deal for me. I'm planning to grab Freespace 1 and 2 shortly.