Unity, Unity and some Visual Studio too
While we're still going with our "OMG, is it still summer... School is starting when?" theme, today's post isn't really for the kids. It's to help you build awesome and cool stuff FOR kids.
It's also a chance to share a free Visual Studio extension that will help you build stuff using one of our favorite tools, Unity.
Finally since an extension isn't fun without something to do with it, we're also highlighting a tutorial for Unity and C# too.
Today [July 29, 2014] we released the Visual Studio Tools for Unity add-on (formerly known as UnityVS). It is now available for download on the Visual Studio Gallery at the following links:
- Visual Studio 2010 Tools for Unity
- Visual Studio 2012 Tools for Unity
- Visual Studio 2013 Tools for Unity
VSTU is Microsoft’s free Visual Studio add-on that enables a rich programming and debugging experience for working with the Unity gaming tools and platform. This is our first release since the acquisition of SyntaxTree, and we’re excited to have the opportunity to reach to the Unity community with Visual Studio.
Here are the highlights in today’s 1.9 release:
- Faster debugger. Attaching and detaching the debugger as well as expanding local variables is now faster.
- Faster startup. Opening VSTU projects is now faster.
- Better handling of C# constructs. The local variables window is now properly populated when debugging iterators or when variables are accessed inside closures.
- Start your game and your debugging session in one click. This feature is one of our most-requested: you can now attach the debugger and start the game by simply changing the debug target. This is only available in Visual Studio 2012 and 2013.
And many more new features and bug fixes as you can see in our changelog. If you have any suggestion for VSTU...
Please read the documentation while installing Visual Studio Tools for Unity: http://unityvs.com/documentation/
UnityVS 1.8 to VSTU 1.9 migration:
If you are migrating an existing UnityVS 1.8 solution, we recommend that you:
- Delete the UnityVS .sln and .*proj files from the root folder of your Unity project.
- Import the new Visual Studio Tools for Unity package into your Unity project as shown in the documentation.
Your new solution will be automatically generated.
Debug Unity from Visual Studio, at last.
Put breakpoints, evaluate variables and complex expressions.
Use the Unity Project Explorer to find your script with the exact same hierarchy that Unity displays.
Get the Unity console directly inside Visual Studio.
Enhance your productivity.
Use wizards to quickly create or navigate to scripts.
Now that you have this great free extension, how about building something? Here's a just released MSDN Magazine article from Adam Tuliper that will help you do just that...
As a software architect, I’ve written many systems, reverse-engineered native code malware, and generally could figure things out on the code side. When it came to making games, though, I was a bit lost as to where to start. I had done some native code graphics programming in the early Windows days, and it wasn’t a fun experience. I then started on DirectX development but realized that, although it was extremely powerful, it seemed like too much code for what I wanted to do.
Then, one day, I decided to experiment with Unity, and I saw it could do some amazing things. This is the first article in a four-part series that will cover the basics and architecture of Unity. I’ll show how to create 2D and 3D games and, finally, how to build for the Windows platforms.
What Unity Is
Unity is a 2D/3D engine and framework that gives you a system for designing game or app scenes for 2D, 2.5D and 3D. I say games and apps because I’ve seen not just games, but training simulators, first-responder applications, and other business-focused applications developed with Unity that need to interact with 2D/3D space. Unity allows you to interact with them via not only code, but also visual components, and export them to every major mobile platform and a whole lot more—for free. (There’s also a pro version that’s very nice, but it isn’t free. You can do an impressive amount with the free version.) Unity supports all major 3D applications and many audio formats, and even understands the Photoshop .psd format so you can just drop a .psd file into a Unity project. Unity allows you to import and assemble assets, write code to interact with your objects, create or import animations for use with an advanced animation system, and much more.
As Figure 1 indicates, Unity has done work to ensure cross-platform support, and you can change platforms literally with one click, although to be fair, there’s typically some minimal effort required, such as integrating with each store for in-app purchases.
Perhaps the most powerful part of Unity is the Unity Asset Store, arguably the best asset marketplace in the gaming market. In it you can find all of your game component needs, such as artwork, 3D models, animation files for your 3D models (see Mixamo’s content in the store for more than 10,000 motions), audio effects and full tracks, plug-ins—including those like the MultiPlatform toolkit that can help with multiple platform support—visual scripting systems such as PlayMaker and Behave, advanced shaders, textures, particle effects, and more. The Unity interface is fully scriptable, allowing many third-party plug-ins to integrate right into the Unity GUI. Most, if not all, professional game developers use a number of packages from the asset store, and if you have something decent to offer, you can publish it there as well.
What Unity Isn’t
I hesitate to describe anything Unity isn’t as people challenge that all the time. However, Unity by default isn’t a system in which to design your 2D assets and 3D models (except for terrains). You can bring a bunch of zombies into a scene and control them, but you wouldn’t create zombies in the Unity default tooling. In that sense, Unity isn’t an asset-creation tool like Autodesk Maya or 3DSMax, Blender or even Adobe Photoshop. There’s at least one third-party modeling plug-in (ProBuilder), though, that allows you to model 3D components right inside of Unity; there are 2D world builder plug-ins such as the 2D Terrain Editor for creating 2D tiled environments, and you can also design terrains from within Unity using their Terrain Tools to create amazing landscapes with trees, grass, mountains, and more. So, again, I hesitate to suggest any limits on what Unity can do.
Where does Microsoft fit into this? Microsoft and Unity work closely together to ensure great platform support across the Microsoft stack. Unity supports Windows standalone executables, Windows Phone, Windows Store applications, Xbox 360 and Xbox One.
Download the latest version of Unity and get yourself a two-button mouse with a clickable scroll wheel. There’s a single download that can be licensed for free mode or pro. You can see the differences between the versions at unity3d.com/unity/licenses. The Editor, which is the main Unity interface, runs on Windows (including Surface Pro), Linux and OS X.
I’ll get into real game development with Unity in the next article, but, first, I’ll explore the Unity interface, project structure and architecture.
Architecture and Compilation
Designing a game in Unity is a fairly straightforward process:
- Bring in your assets (artwork, audio and so on). Use the asset store. Write your own. Hire an artist. Note that Unity does have native support for Maya, Cheetah3d, Blender and 3dsMax, in some cases requiring that software be installed to work with those native 3D formats, and it works with .obj and .fbx common file formats, as well.
- Test in Unity. Export to a platform.
- Test on that platform. Deploy.
But Wait, I Want More!
This article serves as an overview of the architecture and process in Unity. I covered the interface, basics of assigning code, GameObjects, components, Mono and .NET, plus more. This sets us up nicely for the next article where I’ll dive right into assembling game components for a 2D game. Keep an eye on Microsoft Virtual Academy, as I’ll be doing a two-day Unity learning event late summer. And watch for local regional learning events at unity3d.com/pages/windows/events.