Tag Archive for: Mobile

RMC Primer: Everything Virtual Reality (VR)

Category: Industry News, RMC News     |     Tags: C#, Games, Mobile, Unity3D

RMC Primer: Virtual Reality

Virtual Reality is here. Since 2016 we can play high quality experiences.

In my previous article Finding Your Next Unity3D Job I overview what companies want in prospective candidates and outline where you can search for available positions. And in Get a Job In Game Development, I discuss the specifics of a programming career in the games industry

The games industry spans myriad platforms. Historically, PC (Commodore, Amiga, Dos, Windows, Mac, Linux) through the 70’s and 80’s led the medium. Consoles (Atari, Nintendo, Sega, Sony, Microsoft) and handheld (especially Nintendo) brought the first game-specific hardware to consumers. The 2007 release of the iPhone brought the critical masses to the device that would launch more games per year than any other platform before it. People who ‘never play games’ started to play, and continue to play today. The primary leader of advancement each year has been ‘better graphics’. Visuals are important to the marketing, promotion, and experience of playing video games. While the history of that technology spans decades, the number of other major technology advances is relatively small.

Its a short list. Here are the most significant paradigms in video games:

What is VR?

Virtual reality (VR) is a computer technology that uses software-generated realistic images, sounds and other sensations to replicate an a real environment or an imaginary setting, and simulates a user’s physical presence in this environment to enable the user to interact with this space. The essential hardware is a VR Headset.

Visuals

Visuals are at the essence of VR.

If all humans had just one eye, we would see still see robust visual information. But compare that to 2 eyes. Our 2 eyes look in the same general direction at the same objects. However, the offset position of our eyes (inches apart) and the unique angle (looking in slightly towards the nose) give us much more information than one eye could give. Through stereopsis we sense depth, perspective, and motion at a more profound level.

In traditional software development, visual content is designed for one screen of output (e.g. computer monitor or TV). This is essentially a one-eyed perception of the world within our games. For decades, we have adapted to see those worlds as realistic.

The perceived psychological distance between our ‘self’ and our ‘game’ collapses. The subtleties of where we are sitting, how we are sitting, and the angle of the screen are insignificant. In one-screen gaming, we are not ourselves, we are the screen.

However, the essential difference in VR is the simultaneous output of 2 high-resolution, high frame-rate screens. For the first time in the virtual gaming world we are gaining the same benefits of stereopsis in the physical world.

In VR gaming, we are no longer our game screen, we are ourself.

Input

Traditional gaming input devices include keyboard, mouse, controller (joystick/gamepad), and more recently gesture and voice. VR can and will embrace those devices too.

Primary Inputs

  • Headset – the position, angle, and acceleration of your head are input.
  • Motion Controller – The position, angle, and acceleration of your hand(s) are input.
  • Gamepad – Traditional console game controllers are also popular.
  • Others… (Magic Leap)

VR Challenges / Solutions

VR Platforms

While there have been attempts at VR in the past, 2016 marks the relevancy of VR to the mainstream. The cost, quality, and distribution are finally here. Some are already released and before the end of the year, all the known devices will be released.

Top Platforms

  • Vive – Highest price, best hardware
  • Oculus
  • Playstation VR – Lower price non-mobile with massive distribution potential (with 40 million PS4’s sold as of October, 2016)

Others

VR Software

Forever, we as game players waited for the right hardware. Its here. Now the game development industry is scrambling to provide us content.

Games

Movies

  • The Wild West of VR Narrative ( link )

Experiences

Uses For VR

Entertainment is the primary usage for the VR we see today, but telepresence, healthcare, and education have massive potential too.

Education

  • LifeLique (Life Like) – Interactive 3D models for STEM learning
  • Virtual Reality Meets Education ( link )

Developing VR

Apple has yet (October 2016) to announce specific plans for VR/AR, but the major game development platforms are embracing VR. Some more quickly and completely than others. Here are a few leading options.

 

Resources

  1. Big Storage Is The New Reality In Virtual Reality ( link )
  2. Investing in VR Could Kill VR ( link )

RMC Primer: Get A Job In Game Development

Category: Industry News, RMC News     |     Tags: C#, Games, Mobile, Unity3D

This article has moved.

GDC 2014 – San Francisco

Category: Corona, Current & Past Events, Events, RMC News     |     Tags: C#, Games, Mobile, Unity3D

GDC_banner_v1Game Developers Conference 2014

After years of consulting success, I am shifting goals for the next phase of my career.

I am now actively seeking a full-time position as a Unity3D Game Developer. 

I have deep experience in game development; more than 13 years of professional work. I absolutely live and breath gaming. I love it. I have much to offer my next team — everything from game concept creation and development, through to launch — and I am very excited! Here you can learn about my skills and experience ( RivelloMultimediaConsulting.com/forecast/ ) and contact me ( RivelloMultimediaConsulting.com/contact/ ) to setup a time to talk — before, during, or after GDC.

1. GDC Goals

  • Geek Out! – As a lifetime video game fantastic, I am incredibly psyched to see some great sessions about my favorite games of 2013/2014.
  • Promote New Opportunities — I am seeking a Unit3D Game Developer position. There are so many bright teams creating with passion and innovation.
  • Connect to the community — While American, I have worked internationally for many years.
  • Plug-in to the presenter-scene — I’d like to get a feel for who is talking, how, and about what subjects. My focus is mobile. And the mobile space, while growing, it is still marginalized at GDC. As an experience public speaker (360|Flex, Adobe Max, Adobe Camp Brazil, FlashForward, FITC, LA Games Summit, Montreal Game Summit, RIA Adventure Cruise, Rich Media Institute, … ) I would like to speak at GDC 2015 and Unite 2015 next year. There are some session I will attend — more to experience the speaker himself/herself than to see the content.

2. GDC Social Schedule

I’m excited to meet new contacts and reconnect with old friends during GDC. Outside of the conference sessions, I’m excite to block out time for more fun.

Are you hiring? Want to to talk about great video games? Or just explore amazing San Francisco?

Update: The event has ended. Thanks to all the great people I met.

Suggested Meeting Places GDC is huge and it can be hectic to meet on site. Here are a few nearby locations within walking distance of the event’s Mosocone Center. Note that 20,000 people attend GDC and everyone needs to eat. Long delays! Also, some of these businesses have multiple locations, so the address is included.

3. GDC Maps

GDC_Moscone_MAP_v1

Figure 1. Moscone Street Map

Figure 2. Moscone South Hall Map

Figure 2. Moscone South Hall Map

Figure 3. Moscone North Hall Map

Figure 3. Moscone North Hall Map

4. GDC Session Schedule

This year’s conference is full of great sessions about AAA and mobile gaming goodness. Here are some topics of special interest.

Find Your Next Unity3D Job

Category: Industry News, RMC News     |     Tags: C#, Games, Mobile, Unity3D

Finding Your Next Job

As game developers we have complete freedom to choose the tools and teams with which we work. Unity is of course a fantastic tool-set for game development and the industry is hungry for talent.

In fall 2013, I transitioned from consultant to full-time employee again to meet evolving career goals. At that time, I researched hundreds of full-time and freelance job postings for Unity game developers. To more deeply understand what are the most popular requirements for prospective employees, I’ve put together information on where to look for your next job, and what employees value in prospective employees. Take a look!

Where to look

Employers looking for Unity3D Developer talent post job listings on a variety of locations. Unity-related job listing sources;

Unity Job Position Titles There is quiet a variety of job titles which focus on Unity-focused game skills. Often the job list title does not include ‘Unity’ in the title, and you may get more results by omitting ‘Game’. However to focus the search results I include this list;

  • Unity (Game) Developer
  • Unity3D (Game) Developer
  • Unity (Game) Engineer
  • Unity3D (Game) Engineer

What Employers Want

Amount of Experience

Prospective employers like to see you have a few ‘shipped’ (launched) games in your portfolio.

  • 3-5 years for senior positions (0-2 for Junior)
  • 2-3 shipped game titles for senior positions (0-1 for Junior)

IMHO, this requirement is an vague predictor of value. Just like ‘years’ of experience. I have hired dozens of employees as well as subcontractors, and for me it is a far more effective indicator of future efficacy to discuss with the candidate his specific experience with ONLY the areas of the Software Development Life-Cycle (SDLC) which are germane to the role. This list includes; project planning, systems analysis, systems design, implementation (i.e. coding), integration and testing, installation/deployment, and maintenance.

Requirements For Senior Positions

The skills, responsibilities, and requirements of a position obviously depend on the company who lists the position, but here are some of the most common items. I’ve divided the skills among basic ‘employee‘ skills, positions with some manager responsibilities, and then between various programming disciplines. Each discipline is pretty separate — for example a job positions may require ‘game’ skills but not any ‘multi-player’ experience. All of these items are taken directly from real-world Unity-related job posts I have found. I included a short explanation for each item too.

Employee

  • Self-motivated: This is probably the #1 thing I see. Companies are trying more and more to be ‘flat-hierarchies’ where both power and responsibility are spread more evenly across all staff. You may see the management approach as ‘Kanban’, ‘Agile’, ‘team-based’, ‘cell-based’, ‘a studio of studios’ or something similar. Flat encourages each team-member to feel more ‘close’ to the project and ostensibly contribute more. I think it is a great philosophy. In my experience the ‘flatness’ is more ‘talk than walk’ — but that is ok. To fit in – be proactive, transparent, and communicative. If you ask AND answer your own questions, manage your own tasks, and speak before spoken-to about the challenges you are facing, you are on the right path.
  • Passionate: This is probably the #2 thing I see. I consider passion one of the most powerful things in life. Intrinsic appreciation brings intrinsic motivation. However, it is unfortunately rare that a company really cultivates passion in those who they don’t think have it.
  • Team-player: I feel item is most important for two reasons. One programming is a very personal, cerebral process. It is akin to putting ones thoughts into code. The same left-brained personality that is drawn to programming is NOT drawn to interpersonal communication and the vast challenges that exist there. Communication and empathy favor the right-brained. As the internet success bubble was building 10+ years ago, it was feasible to market your experience as a ‘rock-star’ programmer. This is someone who can come in and kick ass (as an individual). Rockstars contribute well to a management-less regime, and there were plenty of those. However, the HR & PM atmosphere has matured and we already see a more team-based approach. So because team-work is rare among programmers its important. Secondly, I am a strong believe that (especially in flatter hierarchies) we are all managers — meaning as super employees we all exist to leverage the skills of those around us in addition to our own direct contribution. As teams adopt more flexible, iterative development (see ‘Agile’) each team member is more of a thought-leader than just a ‘doer’. I feel strongly that it is the collaboration between those who are genuinely interested in excelling at collaborating which creates the virtuous cycle that turns good game projects into truly great ones. Can you amplify the effectiveness of your coworkers?
  • Excellent written, verbal communication: For the reasons just stated, programmers are not always good communicators. Besides the interview process (which is a historically horrible predictor of job performance), how can prospective employers evaluate the communication skills of an employee? That is indeed a challenge — and a great subject perhaps for another article. As a worker, it is recommended to educate yourself on communication as much as you do on technical skills. This requires an honest look inside at gaps in interpersonal skills. We all have them. At larger companies the HR department may have free resources on this; books, workshops, lectures. Your communication (emails and public speaking at meetings) should be honest, compassionate, and concise. At smaller companies it takes discipline and a champion – like yourself – to make the time for growth in communication skills.
  • Interested & capable to learn quickly: For any type of employee in any field, self-education is and will be increasingly valuable.  However, in technology this is paramount — especially as languages, platforms, devices, and consumer expectation are growing so rapidly.
  • Ability to work under high pressure deadlines: This is very common. Also is ‘we have a start-up like atmosphere’. I would call this ’emergency preparedness’ as emotional IQ skills. I think indeed that it is important. However it is trite (meaning-less from overuse) and it shouts ‘our management is disorganized’. Applying for a position listing this, it is recommended that you ask thoroughly about the expectation on utilization (expected hours per week) and access (emergency ‘work’-calls on nights and weekends) of employees.
  • Agile/Scrum project management experience: Instead of traditionally documenting 100% of a project and calendar upfront, teams are embracing a more realistic, ‘wait and see’ and ‘just-in-time’ organic process. Agile is not a match for all employees, and is certainly not a match for all (most) companies either. In the 7-8 years since this buzz-word as been mentioned to me in consulting projects, I have not met one team that FULLY embraces Agile.

I have found that my self-motivation and desire to learn voraciously to be some of my strongest attributes. I have found getting ‘out of my own head’ and bringing truer empathy to workplace dynamics to be an ongoing challenge. I have worked hard to add team-work and communication to my repertoire through intensive study and driving my experiences toward growth. At one large employer I was lucky enough to sponsor a 12-month team building program for me and my staff of 12 programmers. Not everyone loved it. It is hard to do ‘extra’ things at work when deadlines loom. However respecting the soft-skills (everything that is not technical) will come with the employee’s maturity.  

There is a very real chasm between programmers and designers. There is a chasm too between goals of making the game ‘fun’ and making the game ‘profitable’ (e.g. monetization and monetization metagames). Any employee who can bring efficiency and maintain morale between these groups will shine to upper-management. I’m very lucky to have a University art degree which gives me compassion for the challenges of artists working within increasingly technical workflows. On the fun-vs-profit I have learned hard lessons to defer-to and support whatever is the mission statement of the team/company. While I choose to be a programmer, my background brings a little more peace to my teams, I think.

Manager

Management responsibilities vary greatly between personnel management or project management. The trend of ‘flat hierarchy’ organization we see today often spreads these responsibilities to ‘normal’ staff and gets rid of dedicated management. So the normal staff (i.e. artist or programmer) who is ALSO handling management duties. While employees may embrace the theoretical meritocracy (anyone can be a leader), the loss overall from lack of academic management understanding (ostensibly lost because dedicated manager roles are lost) should not be underestimated. Also solitary team members, talented but socially awkward may not be compatible with such teams. Another potential loss. Position listings which require leadership of people or projects may include the following;

  • Conflict resolution: Foster a spirit of teamwork and unity among department members that allows for disagreement over ideas.
  • Plan Staffing Levels: Assess man-power vs work-load, assist HR in recruiting, interviewing, hiring.
  • Effective performance evaluation: Provide feedback through employee recognition, rewards, and disciplinary action.
  • Experience mentoring/coaching: A good manager leads, a great manager creates leaders.  Recognizing and allowing subordinates to flourish is critical. Guiding and cultivating requires maturing and generosity. This leader may champion other employees’ causes to upper management and HR too.
  • PM Software Expertise: Knowing the most common 20% of functionality in any one PM software (e.g. BaseCamp, Unfuddle, MS Project) is sufficient. However, I’ve seen managers that are so familiar with PM they can offer flexible per-team and per-project changes to the workflow. One size does not fit all in PM.
  • Agile/Scrum: Increasingly common. See ‘Agile’ above.

Programming – General

  • Write clean, documented code and also Employ object-oriented programming (OOP):  These are both legitimately vital and top the list of the most commonly required skills. If you are a best practice champion ( I absolutely am, but often waiver to the (lack of) seriousness of my clients), investigate your prospective employers techniques to establish (coding standards bible) and police (mandatory code reviews) such clean code. If the team does not make time for best practices, and most (especially in ad-agency based work) do not, then such practices will not be done.
  • Programming Language: The majority emphasize C#, some mention C# & JavaScript*. I have not seen any that mention Unity’s only other coding language — Boo. While rare, it is worth mentioning that positions specifically related to rendering disciplines may also ask for experience with Unity’s ShaderLab language. ShaderLab’s style it similar to CgFX and Direct3D Effects (.FX) languages and it is used to describes everything needed to display a Material.
  • Use version-control (GIT/SVN): Any mid-sized or larger team is using version control. I must assume. Smaller companies may not have the technical know-how to require it of you. In all cases use it! In my experience there are 3 levels of version-control experience; 1) you can update/commit fine but must call over a coworker for assistance on code-conflicts or other tasks, 2) You can handle all of that and you can ALWAYS fix your own mistakes, 3) You are the person who sets up build automation and answers other peoples git problems. Admittedly I my level is somewhere between #1 and #2. GIT is awesome, and scary.
  • Experience in AS3/Flash: This is VERY common in the listings and I believe this is for 3 primary reasons. First, the Flash has a very strong history in the casual game market starting around year 2000/2001. Second, the skills of a Flash game developer are directly relevant to a Unity game developer position. Lastly, due to strategic changes by Adobe, and the community’s reaction, many Flash game developers are looking for non-Flash jobs. Employers are smart to tap into the Flash game developer market. The ‘death’ of Flash was/is/and-will-be strongly exaggerated. As of 2014, really talented Flash developers still have their pick of top jobs in casual game development — including to a lesser degree in cross-platform mobile.
  • Experience in iOS/Android SDK: Unity teams deploying to these devices may need your native coding skills to create plugins for C# to speak directly to ‘hidden’ features in the device. Also, it is correctly assumed that if you know these platforms, you have experience creating for mobile (and handling some of the related challenges below).
  • Use test-driven development (TDD) practices:  While this one listed, I’m curious if the job really requires it and doubtful the team leaves time for it. Test-driven development is a strategy of creating unit tests ‘as you go’ for your work, rather than later or never. It is proven to yield less breakable, less bug-prone code, but it is FAR less practiced than listed. Kudos to prospective employers who dreaming big and list this in the job post, but it is trite. The best code I have written (with respect to stability) has been on TDD teams, however some of the most frustrating projects have been where such best practices are required but not allocated for (expertise, time, workflow, accountability).

*JavaScript and UnityScript are synonymous here

Programming – Game

  • Passion for games: EVERYONE lists this. Trite. Obviously important.
  • Mobile: Handle device-specific features (accelerometer, camera, etc…), mobile api’s (Ad integration, in-app purchases, etc…), and mobile development workflow (app-store submission, etc…)
  • Cross-platform: Handle multiple screen resolutions and cross-platform workflow
  • 3D: Knowledge of 3D-specific math (Vector, matrices, etc…) provides value to working on core game mechanics and camera (following, avoiding, line-of-sight) systems.
  • AI: Chain of command algorithms to patrol, seek, attack, the player, etc…
  • Rendering: Experience creating shaders allows you to shape the way the game is rendered, creating unique looks like we see in Limbo and Geometry Wars.
  • GUI: Handling input and layout of buttons, text, and overlays. On your team, this worker may be the artist with the most programming skills or the programmer with the most art skills.
  • Prototype creation: Some developers like working with established, proven API’s and common mechanics. Those who demonstrate incredible creativity and communication and also favor more experimentation, hacking, and are at-home with loose requirements/documentation can excel at the earliest stages of pro-typing new game and app concepts.

Programming – Cross-device

  • Mobile: Working on mobile presents many, many challenges. Small screen-size, multiple-screensize, touch input, device-specific features, and more…
  • Ability to optimize: While always important in software, and increasingly important for games, optimization is of paramount importance on the resource-starved mobile devices. Knowledge in optimizing rendering for fast and stable frame rate as well as optimizing for low file-size and low ram-consumption are most commonly requested.
  • Multi-screen: The business requirement to launch on computer, phone, and tablet requires games to be flexible and (asset) workflows to be well-organized. While primarily important to UX and UI experts on your team, these concerns will touch your life too.
  • Multi-platform: With middle-ware tools like Unity, game developers are both blessed and cursed by the write-once-deploy-everywhere paradigm.  Your game projects can do more for more potential game players, but this often requires (figuratively) forking your code to handle the various deployment paths. Team leaders with good solution/design patterns should set the tone, but each developer must be cognizant of the readability and flexibility of her code.

Programming – Tools / Systems

The workflow of every game project includes making some tools to assist the development process. Unity’s incredible editor scripting together with the Asset Store marketplace, make tool-development skills even more relevant and marketable. While on small teams these responsibilities may not be expansive, larger teams often dedicate one or more developers exclusively to the creation of tools.

  • Tool/API design for coworkers: Very very different than traditional end-user-focused development, designing and developing systems with your fellow coworkers in mind has its own batch of challenges. Analyzing upfront what the needs of your team will be requires both experience and technical know-how as well as excellent leadership and communication skills to discuss needs with your team. Unity is so very friendly at tool-creation even one-man-teams need tools. When your team size is 5 to 8 (very common today), a proactive developer can save precious resources with intelligent work-flows and tools. A few examples include level-editors for in-IDE level generation and well-designed API’s to send high-scores from the game to your companies back-end systems.
  • Extend Unity: Knowing the UnityEngine and UnityEditor API’s related to creating custom inspectors, custom windows, gizmos — all greatly expanding what you and your team can do with the Unity IDE is of critical importance. This is the ‘how’ which correlates to the last bullet item.
  • Knowledge of CMS: Your Tool/API may very well speak to a back-end for level-data, user-data, or more info. Knowing how to use a Content Management System (CMS) is a no-brainer requirement, but mastery on CREATING them and setting up easy to use workflows for technical and non-technical team members is really valuable.
  • Knowledge of back-end/database: You may need to program server code or collaborate with those who do. Knowledge with common languages (PHP, .NET, etc…) and tasks (database setup) are important.

Programming – Multi-player

  • 3rd Party Multi-player API Experience: Knowing the Xbox Live, PSN, Steamworks…
  • Good knowledge: of contemporary competitive and cooperative multi-player gaming paradigms
  • Latency/Lag-Hacking: Handling client-prediction algorithms to minimize loss of perceived world-sync for end users.

Programming – Unity Specific Stuff

In addition to the requirement of ‘must know ‘UnityEngine API’ we also see…

  • Must have Unity-Pro License: This requirement is listed in freelance jobs (I have no problem with that) and also (surprisingly) in full-time jobs. It reeks of an employer that does not provide you your computer workstation and the software on it — which is a very real red flag. In a way this is a indirect requirement that you are familiar with the few (honestly) critical pro-only features, but I find it to be a sloppy investigation.
  • Knowledge of Packages: The most common 3rd party libraries I see mentioned are NGUI (easily the most common), 2DToolkit, and surprisingly Playmaker. I think PlayMaker is great and has uses on nontechnical and expertly technical teams, but I’m very surprised its greatness has bubbled up already to job listings.

Unity3D & C# Design Patterns

Category: Quick Tips     |     Tags: C#, Design Patterns, Games, Mobile, Unity3D

As always, RivelloMultimediaConsulting.com/unity/ will be the central location for deep articles and tutorials, Facebook.com/RivelloMultimediaConsulting (like us!) will engage the growing RMC+Unity community, and for the latest opinions and cool links follow me at Twitter.com/srivello.

Design Patterns Defined

As BlackWasp explains, Design patterns provide solutions to common software design problems. In the case of object-oriented programming, design patterns are generally aimed at solving the problems of object generation and interaction, rather than the larger scale problems of overall software architecture. They give generalised solutions in the form of templates that may be applied to real-world problems. Design patterns are a powerful tool for software developers. However, they should not be seen as prescriptive specifications for software. It is more important to understand the concepts that design patterns describe, rather than memorizing their exact classes, methods and properties. It is also important to apply patterns appropriately. Using the incorrect pattern for a situation or applying a design pattern to a trivial solution can over-complicate your code and lead to maintainability issues. A group of developers, the Gang of Four, publicized these 23 design patterns.

Creational Patterns
1. Abstract Factory Creates an instance of several families of classes
2. Builder Separates object construction from its representation
3. Factory Method Creates an instance of several derived classes
4. Prototype A fully initialized instance to be copied or cloned
5. Singleton A class of which only a single instance can exist
Structural Patterns
6. Adapter Match interfaces of different classes
7. Bridge Separates an object’s interface from its implementation
8. Composite A tree structure of simple and composite objects
9 .Decorator Add responsibilities to objects dynamically
10. Facade A single class that represents an entire subsystem
11. Flyweight A fine-grained instance used for efficient sharing
12. Proxy An object representing another object
Behavioral Patterns
13. Chain of Resp. A way of passing a request between a chain of objects
14. Command Encapsulate a command request as an object
15. Interpreter A way to include language elements in a program
16. Iterator Sequentially access the elements of a collection
17. Mediator Defines simplified communication between classes
18. Memento Capture and restore an object’s internal state
19. Observer A way of notifying change to a number of classes
20. State Alter an object’s behavior when its state changes
21. Strategy Encapsulates an algorithm inside a class
22. Template Method Defer the exact steps of an algorithm to a subclass
23. Visitor Defines a new operation to a class without change

Design Patterns for Unity 3D / C#

C# is a robust language, and all popular design patterns are possible. However, which design patterns are most appropriate to Unity3D and game development?

1. Which patterns above are ‘built-in’ to the Unity3D experience?

I’m curious of your help here. Please add a comment below.

2. Which patterns above would you like to see in my training series?

My Unity3D & C# HD Video tutorial series will feature sections about architecture and design patterns. What would you like to see covered? [polldaddy poll=7364605]

Unity3D Version 4.2 Released!

Category: Industry News     |     Tags: C#, Flash, Games, Mobile, Unity3D

Learn Unity 3D & C# – From Basics to Advanced

Unity3D is a powerful suite of tools (Project IDE, Code IDE, run-time) for game development. Read my full articles of “Introduction to Unity3D” and “Tutorial Series: Unity3D & C#“.

There is incredible momentum in the Unity3D product and its community. Here is a look at key features of the latest release.

Top Unity3D 4.2 Features

My top 3 ‘Free Unity’ version features per category are here;

New platforms

  • Windows Phone 8 (Yes!)
  • Windows Store (Yes!)
  • BlackBerry 10 (Yes!)

‘Free Unity’ Features (Formerly Pro Unity Features)

  • Realtime shadows (one-directional light only; hard shadows only). (Yes!)
  • Text-based serialization of materials, prefabs, scenes etc. for easier version control. (Yes!)
  • NavMesh baking (OffMeshLinks still require Pro).

Graphics

  • OpenGL for Android
  • Shuriken Collision Event Callback Scripting
  • (None)

Editor

  • Preset Libraries: Create new libraries and save. (Yes!)
  • Platform switching, player building and asset importing can now be cancelled.
  • (None)

See Unity’s official 4.2 announcement here.

Want More Video Tutorials?

We are currently creating tons of new training content for Unity3D.

[polldaddy poll=7125741]

Unity Game Development

Category: RMC News     |     Tags: C#, Games, Mobile, Unity3D

unity_intro_banner_v1

Unity Game Development

This page serves as the main table of contents for all Unity-specific posts, demos, and code samples. Enjoy.


LATEST UNITY FEATURES

  • New Unity UI (4.6.x): Unity UI Part 1 of 3: Overview
  • New Unity UI (4.6.x): Unity UI Part 2 of 3: Demo – Basic UI (Source code + Video) [Coming Soon!]
  • New Unity UI (4.6.x): Unity UI Part 3 of 3: Demo – Combining UI w/ Frameworks/Architectures for scalability (Source code + Video) [Coming Soon!]

 ASSET STORE PACKAGES

 BmAb5uQIgAEuUyM

 COMPLETE GAMES

paddle_soccer_poster_v1 spider_strike_poster_v1
paddle_soccer_poster_v1  

TRAINING

vimeo_screenflow_video_thumbnail_UWK_poster_v1


ARTICLES

BEST ARTICLE: Unity3D for Game Development

Asset Store

paddle_soccer_poster_v1

Architectures

Best Practices

universal_post_tools_of_trade_450_230_v1

Reactive Extensions (RX)

More Training

Career Advice

Industry News

Misc

External Links (Mentioned In My HD Training Videos)

  • Unity IDE Keyboard Shortcuts (Link)

We are confident that Unity presents compelling benefits for mobile game development; especially games for multiple-devices (write once and publish everywhere). Contact Us today with any questions, comments, and project quotes.

Intro To Unity3D and AR (Augmented Reality)

Category: Industry News, Quick Tips     |     Tags: Augmented Reality, C#, Games, Mobile, Unity3D

Learn Unity 3D & C# – From Basics to Advanced

Unity3D is a powerful suite of tools (Project IDE, Code IDE, run-time) for game development. As always, RivelloMultimediaConsulting.com/unity/ will be the central location for deep articles and tutorials, Facebook.com/RivelloMultimediaConsulting (like us!) will engage the growing RMC+Unity community, and for the latest opinions and cool links follow me at Twitter.com/srivello. There is incredible momentum in the Unity3D product and its community. Here is more information on using Unity3D with Augmented Reality.

Augmented Reality

Augmented reality (AR) is a field of computer science that involves combining the physical world and an interactive, three-dimensional virtual world. I originally wrote a complete demo, source code, and article for my client Adobe – “Augmented Reality With Flash“. Now I’ve updated the information regarding Unity3D. In a future article I may make the full Unity demo source code available. While mainstream audiences are now becoming aware of AR, it is not new. Its background is intertwined with decades of computer science development. Virtual reality (VR), AR’s more familiar counterpart, is the replacement of the user’s physical reality (particularly that which is experienced through sight and hearing) with a computer-generated reality. The idea of a virtual experience is exciting — creating entertaining and educational sensory encounters that do not exist in our everyday lives.

From a consumer standpoint, it seems that AR advances have come out of nowhere to surpass VR advances. The acceleration in AR technology is due to two major factors: First, users are still experiencing reality, so believability is easier to achieve. Adding simple graphics (such as text or simple shapes) and color effects (such as night vision or thermal vision) to reality creates a better user experience. The user is still seeing a mostly familiar world. Second, this more subtle use of computer graphics is less expensive with today’s technology, making it more feasible than VR. Let’s take a look at augmented reality, its current uses, and its future potential.

Practical Uses of AR

The video game industry has released major augmented reality products for more than a decade. The Eye Toy for Sony PlayStation 2 and 3 takes input from an inexpensive video camera and composites the live video feed with CG onto the TV screen. This toy detects the user’s body position in front of the camera as an alternative input method to the typical joystick or gamepad, deepening the user’s immersion into the game world. Detection schemes continue to advance, allowing for more engaging interaction.

There are AR applications outside of console games, including military and consumer products, too. Night-vision goggles and targeting-assistance technology help marksmen in battle, and children’s stories come to life with AR-enhanced books. The uses are vast. With AR-enhanced books, each page of a real-world book is outfitted with a marker — a pattern that is detectable by AR. As the child turns each page, a computer is able to place a virtual 3D animation on top of a physical image printed on paper. While the marker is often an image as in this example, it could also be the user’s face.

Basics of AR

  • Marker Detection – The marker is located by the application. Typically the device webcam is used. The webcam inspects the physical reality near the user to find a predetermined marker (image or the users face).
  • Transform Mapping – The transform (position, rotation, scale) of the marker are interpreted. Move the marker and the transform updates.
  • Rendering – Now the 3D model is updated to rendered to the screen.

Essential Libraries

Because of the growing popularity of AR, many platforms have 3rd party packages (free and premium) to facilitate development. Unity too. While you could create you own system from scratch, it is highly recommended to find the best 3rd party library and use it. Your end product will be higher quality and you will save greatly on time to market. You can choose any one from this list; Unity3D Packages for AR

*Seem to be popular

Vuforia is the best and free to use. I tried with Metaio, it’s easy to use than Vuforia, but the tracking quality don´t convince me. Vuforia handles the pattern occlusion is robust, and it’s framerates are high, much higher than Metaio and NyARToolkit. – 3rd Party Blog Comment

There are pros and cons to each. In a future article, I may evaluate each of these options. Some of the key differences are cost, ease of use, completeness of documentation, breadth of features, and accuracy (speed) of tracking the marker from the camera and transforming the model. Each package surely has its own workflow and API, however the major concepts are the same. So once we choose a package, we follow this the basic setup.

Developing Augmented Reality

Marker Setup

Figure 1. Marker Image

Figure 1. Marker Image

The marker image is a graphic drawn, printed, and shown to the end application as it runs. Your AR package, with help from the marker data file and parameters file, will detect this shape via webcam. To design a graphic, fit the desired shape within a white square that is centered within a larger black square. Keep your shape simple for best results. Note the sun shape in the graphic. This helps the application detect which way is up for the marker and assists its angle and rotation detection. Your design doesn’t need to have this shape per se, but it should be asymmetrical in some way for best results. Webcam Setup Unity features webcam support. As the application runs and a camera is detected, Unity will show the video onscreen. This functionality may or may not be included in the AR package you choose. AR Package Setup

Figure 2. Marker Detection

Figure 2. Marker Detection

A cornerstone of this project is marker detection. As the marker graphic is detected via webcam, its position, rotation, and scale in the user’s physical space are calculated. This calculation will be used in the next steps. The AR package will search each still-frame of webcam footage for the predefined marker graphic (Pattern object). The detection scheme uses just the latest still-frame of video at any given time. Model Setup

Figure 2. 3D Model Setup

Figure 3. 3D Model Setup

The 3D model is loaded and inserted into the 3D scene, and the view into that scene. Luckily 3D is a strength in Unity and much of this work is all done for you. In the final project, this view is layered on top of the 2D webcam Video object shown earlier so the composite (See Figure 4.) of 2D and 3D will look believable. Repeated Loop: Detect-And-Update

Figure 4. Complete Process

Figure 4. Complete Process

Generally speaking your loopToDetectMarkerAndUpdate3D function will be called 60 times per second. Each frame the latest frame of the webcam footage is grabbed. The AR package runs detection on the frame. If the marker is detected the AR package will update the position, rotation, and scale data. This modifies the 3D model so it appears to be at the same position in the user’s physical space as the marker. The resulting effect is nothing short of amazing for first-time viewers.

Great Slideshow on Unity3D & AR

[slideshare id=13088203&doc=unityar-120526151111-phpapp02]

Want More Video Tutorials?

We are currently creating tons of new training content for Unity3D. [polldaddy poll=7125741]

Unity3D Top 5 News Announcements

Category: Industry News     |     Tags: C#, Flash, Games, Mobile, Unity3D

Learn Unity 3D & C# – From Basics to Advanced

Unity3D is a powerful suite of tools (Project IDE, Code IDE, run-time) for game development.

As always, RivelloMultimediaConsulting.com/unity/ will be the central location for deep articles and tutorials, Facebook.com/RivelloMultimediaConsulting (like us!) will engage the growing RMC+Unity community, and for the latest opinions and cool links follow me at Twitter.com/srivello.

There is incredible momentum in the Unity3D product and its community. Here is a look at key announcements.

Top Unity3D Announcements

  • 1. November 2007 – The Unity3D.com Blog section launches (link)
  • 2. January 2009 -Unity targets iOS/Android – Develop for iOS ($400 upgrade) and Android ($400 upgrade) (link) and in 2013 many app award winners prove to be created in Unity (link)
  • 3. October 2009 – Pricing Update – Unity offers a free ‘Indie’ License to target desktop games (link)
  • 4. 2012 – Unity adds support for Adobe’s Flash Player – Develop for the browser with the popular Flash plugin  (link) and support for  Nintendo WiiU & Xbox360  – Develop for consoles (link) and adds support for Sony Platforms – Develop for Sony’s PS3 (and now PS4, PS-Vita, and PlaystationMobile too) (link)
  • 5. November 2012 – Unity 4.0 Launches – With many new features and a slick UI update (link)

Top Unity3D Announcements of 2013

  • 6. 2013 – Unity targets Ouya – Develop for the new Android based Ouya console (link)
  • 7. April 2013 – Unity removes support for Adobe’s Flash Player – Unity will no longer support to target to Flash Player (link)
  • 8. May. 2013 – Pricing Update – Unity offers a free ‘Indie’ License to target iOS & Android games (link)
  • 9. May. 2013 – Pricing Update – Unity offers a free ‘Pro’ License for 75$ per month (link)
  • 10. Jul. 2013 – IDE Popularity – Unity’s IDE reaches 2 million users (link)
  • 11. Jul. 2013 – IDE Version Update – Unity IDE 4.2 Released (RMC Link)
  • 12. Aug. 2013 – Unity Blog Announces – Unity IDE 4.3 Will Feature Native 2D (link)
  • 13. Aug. 2013 – Unite 2013 Conference Keynote – All The Highlights Are Here (link)

What Is Next?

  • Site Features – I’m incredibly impressed with Unity3d.com’s training section. The scope of coverage is large and the price (free), quality, and consistency of the material is unparalleled from any game development platform I’ve seen. Obviously more content will be rolled out over time.
  • Product Features – Unity is currently at a very stable and capable version 4.x. What new features could be announced next?
  • Targets – Unity is agressive in its strategy to offer developers the most compelling platforms on which to publish content. While XBox One will likely be announced, others targets may surprise us.
  • Pricing – Unity has shifted wildly (and favorably) in its pricing structure. While the current options seem pretty complete, history shows us that more changes are very likely.

Want More Video Tutorials?

We are currently creating tons of new training content for Unity3D.

[polldaddy poll=7125741]

Tutorial Series: Unity3D / C#

Category: Screencast Tutorials     |     Tags: C#, Games, Mobile, Unity3D

Learn Unity 3D & C# – From Basics to Advanced

Unity3D is a powerful suite of tools (Project IDE, Code IDE, run-time) for game development. Read the full “Introduction to Unity3D” article and watch the videos below.

As always, RivelloMultimediaConsulting.com/unity/ will be the central location for deep articles and tutorials, Facebook.com/RivelloMultimediaConsulting (like us!) will engage the growing RMC+Unity community, and for the latest opinions and cool links follow me at Twitter.com/srivello.

Got Comments?

Please add a comment below on this post and include the video number. (e.g. “2.1 – I have a question about…”)

Table Of Contents

The videos and source-code are available below this table of contents for all topics marked with [Complete!].  Check back regularly for more videos.

1. Intro

  • 1.1 Series Overview: Welcome  [Complete!]
  • 1.2 IDE – Unity Editor: Learn the basics of project creation, setup, editing, and publishing.   [Complete!]
  • 1.3 IDE – MonoDevelop Part 1: Explore this editor; create classes, code, debug, & compile.  [Complete!]
  • 1.4 Demo Source Code: Where to download the source code & a quick overview of the demo project.  [Complete!]
  • 1.5 IDE – MonoDevelop Part 2: Learn advanced IDE techniques and “What’s New In MonoDevelop 4.0”.

2. C# With Cocktails – Basic Programing

  • 2.1 Programming – C# Primitives –  (e.g. int, float, string)  [Complete!]
  • 2.2 Programming – C# OOP – Object Oriented Programming  [Complete!]
  • 2.3 Programming – C# UnityEngine API Part 1 – Component-based thinking & communicating with GameObject & MonoBehavior. Bonus: Create a cube, texture it, and play a sound via Inspector window.  [Complete!]
  • 2.4 Programming – C# UnityEngine Physics – – Colliders, Rigid Bodies, OnCollisionEnter  [Complete!]
  • 2.5 Programming – C# UnityEngine 2D Part 1 –  Using Unity3D for 2D, Camera Setup, Draw calls  [Complete!]
  • 2.6 Programming – C# UnityEngine API Part 2 – GUIText via C#, Sound via C#, Mouse/Key Input Via C#, Prefabs, 2nd Camera  [Complete!]
  • 2.7 Programming – C# UnityEngine 2D Part 2 –  Learn advanced 2D techniques and “Intro To New Native 2D In Unity 4.3″.
  • 2.8 Debugging – Debugging Basics Part 1 –  Overview of Finding and Fixing Errors in C#
  • 2.9 Debugging – Unity Test Tools Part 1 –  Learn Unit Testing Via nUnit  [Complete!]
  • 3.0 Debugging – Unity Test Tools Part 2 –  Advanced Topics

3. C# With Cocktails – Advanced Programming

  • 3.1 Programming – C# Advanced Part 1 – Classes, Struct, Partial Classes, Singleton, Interface, Casting, Ref/Out, Conditionals, Loops, Collections  [Complete!]
  • 3.2 Programming – C# Advanced Part 2 – Generics, Delegates/Actions/Predicates/Lamda, Threads, Extension Methods, Operator Overloading, Attributes, Preprocessor Directives  [Complete!]
  • 3.3 Programming – C# UnityEngine API Part 3 (e.g. Custom Inspector, Custom Editor, Custom EditorWindow)
  • 3.4 Architectures – C# Architectures Part 1 – MVC
  • 3.5 Architectures – C# Architectures Part 2 – The StrangeIoC Framework 1  [Complete!]
  • 3.6 Architectures – C# Architectures Part 3 – The StrangeIoC 2 : PropertyChangeSignal  [Complete!]
  • 3.7 Architectures – C# Architectures Part 4 – Creating an ‘EventDispatcher’ Framework
  • 3.8 Graphics –  Shaders – Creating custom shaders using ShaderLab

4. Asset Store Packages

  • 4.1 Buy vs Build Theory – When is it best to buy a 3rd party plugin?
  • 4.2 Package: iTween (Free) – Easily animate with code
  • 4.3 Package: NGUI (Premium) – Create 2D & 3D UI interface elements and UI components
  • 4.4 Package: PlayMaker (Premium) – Visual Scripting (Especially for Finite State Machines)

5. Complete Projects

  • 5.1 Build Simple Game #1 – TBD 3D Action
  • 5.2 Build Simple Game #1 With a Custom Game Manager – TBD 3D Action

Free Video Resources

Enjoy a few videos of free content! Sign-up to view the full video series in ‘Member Resources’ below and to access the complete source-code. Membership is free!

[tubepress mode=”vimeoAlbum” vimeoAlbumValue=”2490343″ orderBy=”title”]

Member Video Resources

[private_Free member]Enjoy this members-only content!

Source Code

  • All videos Use This Project (link)

Videos

[tubepress mode=”vimeoAlbum” vimeoAlbumValue=”2490342″ orderBy=”title”]

[/private_Free member]

Want More Video Tutorials?

[polldaddy poll=7125741]