SlideShare une entreprise Scribd logo
1  sur  61
Télécharger pour lire hors ligne
MonoGame and XNA
 in Teaching at Hull

     Rob Miles
Agenda
•   Computer Science Teaching at Hull
•   Using XNA to Teach
•   XNA Overview
•   XNA and MonoGame
•   Targeting Platforms



                               26-Mar-13   2
Computer Science Teaching
           at
          Hull




                   26-Mar-13   3
Computer Science at Hull
• We teach C# as a first language
• We move into C++ and other languages in
  the Second Year
• You can have our course for free if you
  like:
          www.csharpcourse.com


                             26-Mar-13      4
C# Teaching Structure
• We teach algorithms and programming in
  the first semester and then move into
  objects in the second semester
• We’ve found that this works well, in that it
  keeps the focus on problem solving in the
  early stages


                                 26-Mar-13       5
C# and XNA
• XNA is a framework for game creation
• It is provided as a set of libraries and a
  content management system
• It allows you to quickly create 2D sprite
  based games and can also be used as the
  basis of more ambitious work
• You can even write shaders if you want

                                 26-Mar-13     6
Using XNA to Teach




               26-Mar-13   7
Using XNA in the course
• We have found XNA useful for a number
  of reasons
  – It is a well thought out object framework that
    serves as a nice exemplar
  – It is very motivating for the students to be able
    to write games of their own
  – It provides a ready path to market (which
    quite a few students follow)

                                     26-Mar-13      8
Teaching with XNA
• We spend one week of the second
  semester on XNA development
• This introduces the
  LoadContent/Draw/Update behaviours
  and the fundamentals of game
  development
• We also set a lab and coursework on XNA

                              26-Mar-13     9
Having Fun with XNA
• We use XNA as the basis of our “Three
  Thing Game” 24 hour game development
  events
• We have also promoted it as the basis of
  MonoGame team entries




                               26-Mar-13     10
XNA Overview




           26-Mar-13   11
HOW GAMES WORK
• Every game that has ever been written has
  these fundamental behaviours:
• Initialise all the resources at the start
  – fetch all textures, models, scripts etc
• Repeatedly run the game loop:
  – Update the game world
     • read the controllers, update the state and position of
       game elements
  – Draw the game world
     • render the game elements on the viewing device
METHODS IN AN XNA GAME
• The XNA Game class contains methods that
  will provide these behaviours
• Initialise all the resources at the start
  – The Initialize and LoadContent methods
• Repeatedly run the game loop:
  – Update the game world
     • The Update method
  – Draw the game world
     • The Draw method
GETTING STARTED WITH XNA
• When you create a new XNA game project
  you are provided with empty versions of the
  game methods
• Creating an XNA game is a matter of filling in
  these methods to get the game behaviours
  that are required
• We are going to start by getting some clouds
  moving around the display
• Then we are going to add some complication
  and see where it gets us
Cloud and Games
• Apparently the future
  of computing is “in the
  cloud”
• Perhaps the future of
  games is too
• We can start with a
  drawing of a cloud and
  see where this takes us
• For me this is the fun of
  making games
Creating a Game World
// Game World
Texture2D cloudTexture;
Vector2 cloudPosition;
Loading the Cloud Texture
protected override void LoadContent()
{
    spriteBatch = new SpriteBatch(GraphicsDevice);
    cloudPosition = new Vector2(0, 0);
    cloudTexture = Content.Load<Texture2D>("Cloud");
}
MonoGame Digression
• When we use MonoGame in Visual Studio
  2012 we can’t actually process the textures
  directly in the project
• We have to create the assets using an XNA
  project running under Visual Studio 2010
  and copy them in
• More on this later

                                26-Mar-13   18
Drawing the Cloud Texture
protected override void Draw(GameTime gameTime)
{
    GraphicsDevice.Clear(Color.CornflowerBlue);
    spriteBatch.Begin();
    spriteBatch.Draw(cloudTexture, cloudPosition,
                                   Color.White);
    spriteBatch.End();
    base.Draw(gameTime);
}
Drifting our Cloud
Vector2 cloudSpeed = new Vector2(1.5f, 0);

protected override void Update(GameTime gameTime)
{
    cloudPosition += cloudSpeed;

    base.Update(gameTime);
}
1: Drifting Cloud
Creating Game Components
interface ISprite
{
    void Draw(CloudGame game);
    void Update(CloudGame game);
}
// Game World
List<ISprite> gameSprites = new List<ISprite>();
The Cloud Class
class Cloud : CloudGame.ISprite
{
    public Texture2D CloudTexture;
    public Vector2 CloudPosition;
    public Vector2 CloudSpeed;

    public void Draw(CloudGame game) ...

    public void Update(CloudGame game) ...

    public Cloud(Texture2D inTexture, Vector2 inPosition,
                 Vector2 inSpeed) ...
}
Making Random Clouds
Vector2 position =
    new Vector2(rand.Next(GraphicsDevice.Viewport.Width),
                rand.Next(GraphicsDevice.Viewport.Height));

Vector2 speed = new Vector2(rand.Next(0, 100) / 100f, 0);

Cloud c = new Cloud( cloudTexture, position, speed);

gameSprites.Add(c);
Updating Sprites
protected override void Update(GameTime gameTime)
{
    foreach (ISprite sprite in gameSprites)
        sprite.Update(this);

    base.Update(gameTime);
}
2: Lots of Clouds
Cloud Bursting Game
• We could add a simple game mechanic so
  that players can burst the clouds by
  touching them
• To do this our game must detect touch
  events This is very easy to do
• Each cloud can check during its Update
  method to see if it has been burst
Getting Touch Locations
TouchCollection Touches;

protected override void Update(GameTime gameTime)
{
    Touches = TouchPanel.GetState();

    foreach (ISprite sprite in gameSprites)
        sprite.Update(this);
}
Using Touch Locations
foreach (TouchLocation touch in game.Touches)
{
    if (touch.State == TouchLocationState.Pressed) {
        if ( CloudContains(touch.Position) ) {
            CloudPopSound.Play();
            Burst = true;
            return;
        }
    }
}
Cloud Contains method
public bool CloudContains(Vector2 pos)
{
  if (pos.X < CloudPosition.X) return false;
  if (pos.X > (CloudPosition.X + CloudTexture.Width)) return false;
  if (pos.Y < CloudPosition.Y) return false;
  if (pos.Y > (CloudPosition.Y + CloudTexture.Height)) return false;
    return true;
}
Pop Sound Effect
public SoundEffect CloudPopSound;
...
SoundEffect CloudPopSound =
Content.Load<SoundEffect>("Pop");
...
CloudPopSound.Play();
3: Bursting Clouds
Touch States
• An active touch location can occupy one of a
  number of states:
  – TouchState.Pressed
  – TouchState.Moved
  – TouchState.Released
• Each touch location also has a unique ID so
  that it can be identified throughout its
  lifecycle
• This gives very good control of touch events
  at a very low level
Flicking Clouds using Gestures
• The touch panel also provides gesture support
• We can use the gestures to allow the player to
  flick clouds around the sky
• The game program can register an interest in
  gesture events
• These are then tracked and buffered by the
  touch panel
• Each gesture gives a particular set of
  information
Registering for a Gesture
TouchPanel.EnabledGestures = GestureType.Flick;
Using a Gesture
while (TouchPanel.IsGestureAvailable)
{
    GestureSample gesture = TouchPanel.ReadGesture();

    if (gesture.GestureType == GestureType.Flick)
    {
        waterCloud.CloudSpeed = gesture.Delta / 100f;
    }
}
4: Flicking Clouds
Using the Accelerometer
• You can also use the accelerometer to control the
  behaviour of objects in your game
• The Accelerometer can measure acceleration in X,
  Y and Z
• You can use just the X and Y values to turn it into a
  replacement for a gamepad
• The values that are returned are in the same range
   – -1 to +1 in each axis
• A value of 1 means 1G (G is the acceleration due to
  gravity)
Accelerometer Events
• The accelerometer in XNA is event driven
• It generates events when new readings are
  available
• You must bind a method to the event
• The method can store the settings for later
  use
• The code in an Update method can read the
  settings and use them to update the position
  of game objects
Starting the Accelerometer
Accelerometer accel;
void startAccelerometer()
{
  accel = Accelerometer.GetDefault();

    if (accel != null)
     accel.ReadingChanged += accel_ReadingChanged;
}
Accelerometer Event Handler
void accel_ReadingChanged(Accelerometer sender,
              AccelerometerReadingChangedEventArgs args)
{
    lock (this)
    {
        accelReading.X = (float)args.Reading.AccelerationX;
        accelReading.Y = (float)args.Reading.AccelerationY;
        accelReading.Z = (float)args.Reading.AccelerationZ;
    }
}
Reading the Accelerometer
Vector3 getAccReading()
{
    Vector3 result;

    lock (this) {
        result = new Vector3(accelReading.X, accelReading.Y,
                                             accelReading.Z);
    }
    return result;
}
Acceleration and Physics
Vector3 acceleration = game.getAccReading();

CloudSpeed.X += (acceleration.X * 0.1f);

CloudPosition += CloudSpeed;
5: Tipping Clouds
XNA and MONOGame
MonoGame
• MonoGame is an Open Source
  implementation of the XNA Game
  Development Framework
• It is based on Version 4.x of the framework
• It lets you take your XNA games into all
  kinds of interesting places


                                26-Mar-13   46
Running MonoGame
• MonoGame runs on top of the .NET
  framework
• On Microsoft platforms this means that
  MonoGame just works
• On non-Microsoft platforms this means that
  MonoGame must run on top of an
  installation of Mono which provides the .NET
  underpinnings
  – Although MonoGame is free, Mono is something
    you have to buy

                                   26-Mar-13       47
Platform Abilities




• This is the current level of platform
  support
• Note that this is continually changing

                                26-Mar-13   48
XNA Games for Windows 8
• I’m going to focus on writing XNA games
  for Windows 8
• You can make proper Windows 8 versions
  of your games which will run on all
  Windows 8 platforms, including Surface
  RT


                             26-Mar-13   49
XNA Games for Windows Phone 8

• You can also use MonoGame to make XNA
  games for Windows Phone 8
  – However this is not as well developed as it is
    for Windows 8, and at the moment I don’t
    think you can put them in market place
• For Windows 8 Phones you can still use
  XNA 4.0 and target Windows Phone 7.5
  devices as well
                                     26-Mar-13       50
Getting Started on Windows 8
1. Install Visual Studio 2012
2. Install Visual Studio 2010
  http://www.microsoft.com/visualstudio/eng/downloads

3. Install the Games for Windows Client
  http://www.xbox.com/en-US/LIVE/PC/DownloadClient

4. Install XNA 4.0
  http://www.microsoft.com/en-us/download/details.aspx?id=23714

5. Install MonoGame
  http://www.monogame.net/

                                            26-Mar-13         51
Making a MonoGame Project




• Monogame adds new project types
                             26-Mar-13   52
Running the application
• You can run the application on your
  development device, in an emulator on
  your device or remotely debug it in
  another device
  – Including a Microsoft Surface 
• You have to load the Debugging Tool into
  that to make it work

                                  26-Mar-13   53
Content Management




• There is no support for creating content
  for MonoGame solutions
• You have to use XNA for this

                                26-Mar-13    54
Making Content
• This is a rather convoluted process
1. Create the content (Image and Sounds)
2. Make an XNA 4.0 project using Visual
   Studio 2010 and load it with the content
3. Drop the XNB files from the XNA project
   into your MonoGame project


                               26-Mar-13   55
Why we have to do this
• XNA manages content by creating
  intermediate files from the images and
  sounds we give it to put in our game
• These are the “.xnb” files
• When the game runs on the target
  platform these content files are loaded
• MonoGame only has the code that reads
  these content files

                               26-Mar-13    56
Placing the Resources




cheeseTexture = Content.Load<Texture2D>("cheese");


                                         26-Mar-13   57
Content Management
• You will need to make
  a Content folder in the
  MonoGame project
• You will have to set
  the build action to
  “Content” for any
  content items that you
  add into this folder
                            26-Mar-13   58
Windows 8 Features
• MonoGame exposes the Windows
  interfaces in a similar way to the ones on
  Windows Phone
  – You get the touch screen, with gesture
    support, and the accelerometer
• These are very easy to use in a game



                                    26-Mar-13   59
And so….
• Students like learning with XNA
• Writing XNA from scratch for Windows 8
  is easy
• Converting existing XNA games is also easy
• MonoGame provides a path to many
  markets, including Windows 8


                               26-Mar-13   60
Resources
• MonoGame
    http://www.monogame.net/
• Mono Project
    http://www.mono-project.com
• Me
    http://www.robmiles.com



                               26-Mar-13   61

Contenu connexe

Tendances

TensorFlow Dev Summit 2018 Extended: TensorFlow Eager Execution
TensorFlow Dev Summit 2018 Extended: TensorFlow Eager ExecutionTensorFlow Dev Summit 2018 Extended: TensorFlow Eager Execution
TensorFlow Dev Summit 2018 Extended: TensorFlow Eager ExecutionTaegyun Jeon
 
DRAW: Deep Recurrent Attentive Writer
DRAW: Deep Recurrent Attentive WriterDRAW: Deep Recurrent Attentive Writer
DRAW: Deep Recurrent Attentive WriterMark Chang
 
A practical Introduction to Machine(s) Learning
A practical Introduction to Machine(s) LearningA practical Introduction to Machine(s) Learning
A practical Introduction to Machine(s) LearningBruno Gonçalves
 
Machine(s) Learning with Neural Networks
Machine(s) Learning with Neural NetworksMachine(s) Learning with Neural Networks
Machine(s) Learning with Neural NetworksBruno Gonçalves
 
Backpropagation And Gradient Descent In Neural Networks | Neural Network Tuto...
Backpropagation And Gradient Descent In Neural Networks | Neural Network Tuto...Backpropagation And Gradient Descent In Neural Networks | Neural Network Tuto...
Backpropagation And Gradient Descent In Neural Networks | Neural Network Tuto...Simplilearn
 
Applied Deep Learning 11/03 Convolutional Neural Networks
Applied Deep Learning 11/03 Convolutional Neural NetworksApplied Deep Learning 11/03 Convolutional Neural Networks
Applied Deep Learning 11/03 Convolutional Neural NetworksMark Chang
 
Deep Learning for Computer Vision: Memory usage and computational considerati...
Deep Learning for Computer Vision: Memory usage and computational considerati...Deep Learning for Computer Vision: Memory usage and computational considerati...
Deep Learning for Computer Vision: Memory usage and computational considerati...Universitat Politècnica de Catalunya
 
Deep Learning for AI (2)
Deep Learning for AI (2)Deep Learning for AI (2)
Deep Learning for AI (2)Dongheon Lee
 
PyTorch Tutorial for NTU Machine Learing Course 2017
PyTorch Tutorial for NTU Machine Learing Course 2017PyTorch Tutorial for NTU Machine Learing Course 2017
PyTorch Tutorial for NTU Machine Learing Course 2017Yu-Hsun (lymanblue) Lin
 
Big data streams, Internet of Things, and Complex Event Processing Improve So...
Big data streams, Internet of Things, and Complex Event Processing Improve So...Big data streams, Internet of Things, and Complex Event Processing Improve So...
Big data streams, Internet of Things, and Complex Event Processing Improve So...Chris Haddad
 
Introduction to Chainer
Introduction to ChainerIntroduction to Chainer
Introduction to ChainerSeiya Tokui
 
CUDA and Caffe for deep learning
CUDA and Caffe for deep learningCUDA and Caffe for deep learning
CUDA and Caffe for deep learningAmgad Muhammad
 
Rajat Monga at AI Frontiers: Deep Learning with TensorFlow
Rajat Monga at AI Frontiers: Deep Learning with TensorFlowRajat Monga at AI Frontiers: Deep Learning with TensorFlow
Rajat Monga at AI Frontiers: Deep Learning with TensorFlowAI Frontiers
 
Rendering Techniques in Rise of the Tomb Raider
Rendering Techniques in Rise of the Tomb RaiderRendering Techniques in Rise of the Tomb Raider
Rendering Techniques in Rise of the Tomb RaiderEidos-Montréal
 
Big Data in the Real World. Real-time Football Analytics
Big Data in the Real World. Real-time Football AnalyticsBig Data in the Real World. Real-time Football Analytics
Big Data in the Real World. Real-time Football AnalyticsWSO2
 
[251] implementing deep learning using cu dnn
[251] implementing deep learning using cu dnn[251] implementing deep learning using cu dnn
[251] implementing deep learning using cu dnnNAVER D2
 
Introducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowIntroducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowEtsuji Nakai
 
Show, Attend and Tell: Neural Image Caption Generation with Visual Attention
Show, Attend and Tell: Neural Image Caption Generation with Visual AttentionShow, Attend and Tell: Neural Image Caption Generation with Visual Attention
Show, Attend and Tell: Neural Image Caption Generation with Visual AttentionEun Ji Lee
 
Using CNTK's Python Interface for Deep LearningDave DeBarr -
Using CNTK's Python Interface for Deep LearningDave DeBarr - Using CNTK's Python Interface for Deep LearningDave DeBarr -
Using CNTK's Python Interface for Deep LearningDave DeBarr - PyData
 
Deep learning and its application
Deep learning and its applicationDeep learning and its application
Deep learning and its applicationSrishty Saha
 

Tendances (20)

TensorFlow Dev Summit 2018 Extended: TensorFlow Eager Execution
TensorFlow Dev Summit 2018 Extended: TensorFlow Eager ExecutionTensorFlow Dev Summit 2018 Extended: TensorFlow Eager Execution
TensorFlow Dev Summit 2018 Extended: TensorFlow Eager Execution
 
DRAW: Deep Recurrent Attentive Writer
DRAW: Deep Recurrent Attentive WriterDRAW: Deep Recurrent Attentive Writer
DRAW: Deep Recurrent Attentive Writer
 
A practical Introduction to Machine(s) Learning
A practical Introduction to Machine(s) LearningA practical Introduction to Machine(s) Learning
A practical Introduction to Machine(s) Learning
 
Machine(s) Learning with Neural Networks
Machine(s) Learning with Neural NetworksMachine(s) Learning with Neural Networks
Machine(s) Learning with Neural Networks
 
Backpropagation And Gradient Descent In Neural Networks | Neural Network Tuto...
Backpropagation And Gradient Descent In Neural Networks | Neural Network Tuto...Backpropagation And Gradient Descent In Neural Networks | Neural Network Tuto...
Backpropagation And Gradient Descent In Neural Networks | Neural Network Tuto...
 
Applied Deep Learning 11/03 Convolutional Neural Networks
Applied Deep Learning 11/03 Convolutional Neural NetworksApplied Deep Learning 11/03 Convolutional Neural Networks
Applied Deep Learning 11/03 Convolutional Neural Networks
 
Deep Learning for Computer Vision: Memory usage and computational considerati...
Deep Learning for Computer Vision: Memory usage and computational considerati...Deep Learning for Computer Vision: Memory usage and computational considerati...
Deep Learning for Computer Vision: Memory usage and computational considerati...
 
Deep Learning for AI (2)
Deep Learning for AI (2)Deep Learning for AI (2)
Deep Learning for AI (2)
 
PyTorch Tutorial for NTU Machine Learing Course 2017
PyTorch Tutorial for NTU Machine Learing Course 2017PyTorch Tutorial for NTU Machine Learing Course 2017
PyTorch Tutorial for NTU Machine Learing Course 2017
 
Big data streams, Internet of Things, and Complex Event Processing Improve So...
Big data streams, Internet of Things, and Complex Event Processing Improve So...Big data streams, Internet of Things, and Complex Event Processing Improve So...
Big data streams, Internet of Things, and Complex Event Processing Improve So...
 
Introduction to Chainer
Introduction to ChainerIntroduction to Chainer
Introduction to Chainer
 
CUDA and Caffe for deep learning
CUDA and Caffe for deep learningCUDA and Caffe for deep learning
CUDA and Caffe for deep learning
 
Rajat Monga at AI Frontiers: Deep Learning with TensorFlow
Rajat Monga at AI Frontiers: Deep Learning with TensorFlowRajat Monga at AI Frontiers: Deep Learning with TensorFlow
Rajat Monga at AI Frontiers: Deep Learning with TensorFlow
 
Rendering Techniques in Rise of the Tomb Raider
Rendering Techniques in Rise of the Tomb RaiderRendering Techniques in Rise of the Tomb Raider
Rendering Techniques in Rise of the Tomb Raider
 
Big Data in the Real World. Real-time Football Analytics
Big Data in the Real World. Real-time Football AnalyticsBig Data in the Real World. Real-time Football Analytics
Big Data in the Real World. Real-time Football Analytics
 
[251] implementing deep learning using cu dnn
[251] implementing deep learning using cu dnn[251] implementing deep learning using cu dnn
[251] implementing deep learning using cu dnn
 
Introducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowIntroducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlow
 
Show, Attend and Tell: Neural Image Caption Generation with Visual Attention
Show, Attend and Tell: Neural Image Caption Generation with Visual AttentionShow, Attend and Tell: Neural Image Caption Generation with Visual Attention
Show, Attend and Tell: Neural Image Caption Generation with Visual Attention
 
Using CNTK's Python Interface for Deep LearningDave DeBarr -
Using CNTK's Python Interface for Deep LearningDave DeBarr - Using CNTK's Python Interface for Deep LearningDave DeBarr -
Using CNTK's Python Interface for Deep LearningDave DeBarr -
 
Deep learning and its application
Deep learning and its applicationDeep learning and its application
Deep learning and its application
 

En vedette

Monogame Introduction (ENG)
Monogame Introduction (ENG)Monogame Introduction (ENG)
Monogame Introduction (ENG)Aloïs Deniel
 
Storyboard Example
Storyboard ExampleStoryboard Example
Storyboard ExampleRachel Heyes
 
Tips & Tricks that every game developer should know
Tips & Tricks that every game developer should knowTips & Tricks that every game developer should know
Tips & Tricks that every game developer should knowGorm Lai
 
XNA Windows 8 MonoGame
XNA Windows 8 MonoGameXNA Windows 8 MonoGame
XNA Windows 8 MonoGameLee Stott
 
Madrid .NET Meetup: Microsoft open sources .NET!
Madrid .NET Meetup: Microsoft open sources .NET!Madrid .NET Meetup: Microsoft open sources .NET!
Madrid .NET Meetup: Microsoft open sources .NET!Alfonso Garcia-Caro
 
Multyplatform and mono part 2 - Matteo Nicolotti
Multyplatform and mono part 2 - Matteo Nicolotti Multyplatform and mono part 2 - Matteo Nicolotti
Multyplatform and mono part 2 - Matteo Nicolotti Codemotion
 
Games with Win 8 Style by Neneng
Games with Win 8 Style by NenengGames with Win 8 Style by Neneng
Games with Win 8 Style by NenengAgate Studio
 
EastBay.NET - Introduction to MonoTouch
EastBay.NET - Introduction to MonoTouchEastBay.NET - Introduction to MonoTouch
EastBay.NET - Introduction to MonoTouchmobiweave
 
Road to Success (July 1st) - Mobile Game Development Alternatives - Andrew Bu...
Road to Success (July 1st) - Mobile Game Development Alternatives - Andrew Bu...Road to Success (July 1st) - Mobile Game Development Alternatives - Andrew Bu...
Road to Success (July 1st) - Mobile Game Development Alternatives - Andrew Bu...SanaChoudary
 
.NET? MonoDroid Does
.NET? MonoDroid Does.NET? MonoDroid Does
.NET? MonoDroid DoesKevin McMahon
 
Cross platform physics games - NDC 2014
Cross platform physics games - NDC 2014Cross platform physics games - NDC 2014
Cross platform physics games - NDC 2014Runegri
 
Cross-platform Game Dev w/ CocosSharp
Cross-platform Game Dev w/ CocosSharpCross-platform Game Dev w/ CocosSharp
Cross-platform Game Dev w/ CocosSharpAlexey Strakh
 
Introduction to CocosSharp
Introduction to CocosSharpIntroduction to CocosSharp
Introduction to CocosSharpJames Montemagno
 
Generative Art Hands On with F#
Generative Art Hands On with F#Generative Art Hands On with F#
Generative Art Hands On with F#Phillip Trelford
 

En vedette (20)

Building a game in a day
Building a game in a dayBuilding a game in a day
Building a game in a day
 
Monogame Introduction (ENG)
Monogame Introduction (ENG)Monogame Introduction (ENG)
Monogame Introduction (ENG)
 
Storyboard Example
Storyboard ExampleStoryboard Example
Storyboard Example
 
Tips & Tricks that every game developer should know
Tips & Tricks that every game developer should knowTips & Tricks that every game developer should know
Tips & Tricks that every game developer should know
 
Xna for wp7
Xna for wp7Xna for wp7
Xna for wp7
 
XNA Windows 8 MonoGame
XNA Windows 8 MonoGameXNA Windows 8 MonoGame
XNA Windows 8 MonoGame
 
Madrid .NET Meetup: Microsoft open sources .NET!
Madrid .NET Meetup: Microsoft open sources .NET!Madrid .NET Meetup: Microsoft open sources .NET!
Madrid .NET Meetup: Microsoft open sources .NET!
 
Multyplatform and mono part 2 - Matteo Nicolotti
Multyplatform and mono part 2 - Matteo Nicolotti Multyplatform and mono part 2 - Matteo Nicolotti
Multyplatform and mono part 2 - Matteo Nicolotti
 
Games with Win 8 Style by Neneng
Games with Win 8 Style by NenengGames with Win 8 Style by Neneng
Games with Win 8 Style by Neneng
 
Xna and mono game
Xna and mono gameXna and mono game
Xna and mono game
 
EastBay.NET - Introduction to MonoTouch
EastBay.NET - Introduction to MonoTouchEastBay.NET - Introduction to MonoTouch
EastBay.NET - Introduction to MonoTouch
 
Road to Success (July 1st) - Mobile Game Development Alternatives - Andrew Bu...
Road to Success (July 1st) - Mobile Game Development Alternatives - Andrew Bu...Road to Success (July 1st) - Mobile Game Development Alternatives - Andrew Bu...
Road to Success (July 1st) - Mobile Game Development Alternatives - Andrew Bu...
 
Flappy - Paris 2015
Flappy -  Paris 2015Flappy -  Paris 2015
Flappy - Paris 2015
 
.NET? MonoDroid Does
.NET? MonoDroid Does.NET? MonoDroid Does
.NET? MonoDroid Does
 
Cross platform physics games - NDC 2014
Cross platform physics games - NDC 2014Cross platform physics games - NDC 2014
Cross platform physics games - NDC 2014
 
Cross-platform Game Dev w/ CocosSharp
Cross-platform Game Dev w/ CocosSharpCross-platform Game Dev w/ CocosSharp
Cross-platform Game Dev w/ CocosSharp
 
CocosSharp_XHackNight_07feb
CocosSharp_XHackNight_07febCocosSharp_XHackNight_07feb
CocosSharp_XHackNight_07feb
 
Introduction to CocosSharp
Introduction to CocosSharpIntroduction to CocosSharp
Introduction to CocosSharp
 
Gaming in Csharp
Gaming in CsharpGaming in Csharp
Gaming in Csharp
 
Generative Art Hands On with F#
Generative Art Hands On with F#Generative Art Hands On with F#
Generative Art Hands On with F#
 

Similaire à Monogame and xna

School For Games 2015 - Unity Engine Basics
School For Games 2015 - Unity Engine BasicsSchool For Games 2015 - Unity Engine Basics
School For Games 2015 - Unity Engine BasicsNick Pruehs
 
WP7 HUB_XNA overview
WP7 HUB_XNA overviewWP7 HUB_XNA overview
WP7 HUB_XNA overviewMICTT Palma
 
Gdc09 Minigames
Gdc09 MinigamesGdc09 Minigames
Gdc09 MinigamesSusan Gold
 
Unreal Engine Basics 02 - Unreal Editor
Unreal Engine Basics 02 - Unreal EditorUnreal Engine Basics 02 - Unreal Editor
Unreal Engine Basics 02 - Unreal EditorNick Pruehs
 
Deep dive into deeplearn.js
Deep dive into deeplearn.jsDeep dive into deeplearn.js
Deep dive into deeplearn.jsKai Sasaki
 
38199728 multi-player-tutorial
38199728 multi-player-tutorial38199728 multi-player-tutorial
38199728 multi-player-tutorialalfrecaay
 
【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法
【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法
【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法Unite2017Tokyo
 
【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法
【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法
【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法Unity Technologies Japan K.K.
 
Developing Multi Platform Games using PlayN and TriplePlay Framework
Developing Multi Platform Games using PlayN and TriplePlay FrameworkDeveloping Multi Platform Games using PlayN and TriplePlay Framework
Developing Multi Platform Games using PlayN and TriplePlay FrameworkCsaba Toth
 
JavaFX - Next Generation Java UI
JavaFX - Next Generation Java UIJavaFX - Next Generation Java UI
JavaFX - Next Generation Java UIYoav Aharoni
 
Oculus Rift DK2 + Leap Motion Tutorial
Oculus Rift DK2 + Leap Motion TutorialOculus Rift DK2 + Leap Motion Tutorial
Oculus Rift DK2 + Leap Motion TutorialChris Zaharia
 
How to build Kick Ass Games in the Cloud
How to build Kick Ass Games in the CloudHow to build Kick Ass Games in the Cloud
How to build Kick Ass Games in the CloudChris Schalk
 
Developing games and graphic visualizations in Pascal
Developing games and graphic visualizations in PascalDeveloping games and graphic visualizations in Pascal
Developing games and graphic visualizations in Pascalmichaliskambi
 
Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5Takao Wada
 
Developing a Multiplayer RTS with the Unreal Engine 3
Developing a Multiplayer RTS with the Unreal Engine 3Developing a Multiplayer RTS with the Unreal Engine 3
Developing a Multiplayer RTS with the Unreal Engine 3Nick Pruehs
 

Similaire à Monogame and xna (20)

School For Games 2015 - Unity Engine Basics
School For Games 2015 - Unity Engine BasicsSchool For Games 2015 - Unity Engine Basics
School For Games 2015 - Unity Engine Basics
 
WP7 HUB_XNA overview
WP7 HUB_XNA overviewWP7 HUB_XNA overview
WP7 HUB_XNA overview
 
Gdc09 Minigames
Gdc09 MinigamesGdc09 Minigames
Gdc09 Minigames
 
XNA L01–Introduction
XNA L01–IntroductionXNA L01–Introduction
XNA L01–Introduction
 
WP7 HUB_XNA
WP7 HUB_XNAWP7 HUB_XNA
WP7 HUB_XNA
 
Unity3 d devfest-2014
Unity3 d devfest-2014Unity3 d devfest-2014
Unity3 d devfest-2014
 
XNA in a Day
XNA in a DayXNA in a Day
XNA in a Day
 
Unreal Engine Basics 02 - Unreal Editor
Unreal Engine Basics 02 - Unreal EditorUnreal Engine Basics 02 - Unreal Editor
Unreal Engine Basics 02 - Unreal Editor
 
Deep dive into deeplearn.js
Deep dive into deeplearn.jsDeep dive into deeplearn.js
Deep dive into deeplearn.js
 
38199728 multi-player-tutorial
38199728 multi-player-tutorial38199728 multi-player-tutorial
38199728 multi-player-tutorial
 
【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法
【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法
【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法
 
【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法
【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法
【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法
 
Developing Multi Platform Games using PlayN and TriplePlay Framework
Developing Multi Platform Games using PlayN and TriplePlay FrameworkDeveloping Multi Platform Games using PlayN and TriplePlay Framework
Developing Multi Platform Games using PlayN and TriplePlay Framework
 
JavaFX - Next Generation Java UI
JavaFX - Next Generation Java UIJavaFX - Next Generation Java UI
JavaFX - Next Generation Java UI
 
Hill ch2ed3
Hill ch2ed3Hill ch2ed3
Hill ch2ed3
 
Oculus Rift DK2 + Leap Motion Tutorial
Oculus Rift DK2 + Leap Motion TutorialOculus Rift DK2 + Leap Motion Tutorial
Oculus Rift DK2 + Leap Motion Tutorial
 
How to build Kick Ass Games in the Cloud
How to build Kick Ass Games in the CloudHow to build Kick Ass Games in the Cloud
How to build Kick Ass Games in the Cloud
 
Developing games and graphic visualizations in Pascal
Developing games and graphic visualizations in PascalDeveloping games and graphic visualizations in Pascal
Developing games and graphic visualizations in Pascal
 
Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5
 
Developing a Multiplayer RTS with the Unreal Engine 3
Developing a Multiplayer RTS with the Unreal Engine 3Developing a Multiplayer RTS with the Unreal Engine 3
Developing a Multiplayer RTS with the Unreal Engine 3
 

Plus de Lee Stott

Cortana intelligence suite for projects &amp; hacks
Cortana intelligence suite for projects &amp; hacksCortana intelligence suite for projects &amp; hacks
Cortana intelligence suite for projects &amp; hacksLee Stott
 
Project Oxford - Introduction to advanced Manchine Learning API
Project Oxford - Introduction to advanced Manchine Learning APIProject Oxford - Introduction to advanced Manchine Learning API
Project Oxford - Introduction to advanced Manchine Learning APILee Stott
 
Visual studio professional 2015 overview
Visual studio professional 2015 overviewVisual studio professional 2015 overview
Visual studio professional 2015 overviewLee Stott
 
Azure cloud for students and educators
Azure cloud   for students and educatorsAzure cloud   for students and educators
Azure cloud for students and educatorsLee Stott
 
Getting coding in under a hour with Imagine Microsoft
Getting coding in under a hour with Imagine MicrosoftGetting coding in under a hour with Imagine Microsoft
Getting coding in under a hour with Imagine MicrosoftLee Stott
 
Create and manage a web application on Azure (step to step tutorial)
Create and manage a web application on Azure (step to step tutorial)Create and manage a web application on Azure (step to step tutorial)
Create and manage a web application on Azure (step to step tutorial)Lee Stott
 
Setting up a WordPress Site on Microsoft DreamSpark Azure Cloud Subscription
Setting up a WordPress Site on Microsoft DreamSpark Azure Cloud SubscriptionSetting up a WordPress Site on Microsoft DreamSpark Azure Cloud Subscription
Setting up a WordPress Site on Microsoft DreamSpark Azure Cloud SubscriptionLee Stott
 
Imagine at Microsoft - Resources for Students and Educators
Imagine at Microsoft - Resources for Students and EducatorsImagine at Microsoft - Resources for Students and Educators
Imagine at Microsoft - Resources for Students and EducatorsLee Stott
 
Porting unity games to windows - London Unity User Group
Porting unity games to windows - London Unity User GroupPorting unity games to windows - London Unity User Group
Porting unity games to windows - London Unity User GroupLee Stott
 
Visual Studio Tools for Unity Unity User Group 23rd Feb
Visual Studio Tools for Unity  Unity User Group 23rd FebVisual Studio Tools for Unity  Unity User Group 23rd Feb
Visual Studio Tools for Unity Unity User Group 23rd FebLee Stott
 
Unity camp london feb 2015
Unity camp london feb 2015Unity camp london feb 2015
Unity camp london feb 2015Lee Stott
 
Marmalade @include2014 Dev leestott Microsoft
Marmalade @include2014 Dev leestott MicrosoftMarmalade @include2014 Dev leestott Microsoft
Marmalade @include2014 Dev leestott MicrosoftLee Stott
 
E book Mobile App Marketing_101
E book Mobile App Marketing_101E book Mobile App Marketing_101
E book Mobile App Marketing_101Lee Stott
 
Game Republic 24th April 2014 - Maximising your app revenue
Game Republic 24th April 2014  - Maximising your app revenueGame Republic 24th April 2014  - Maximising your app revenue
Game Republic 24th April 2014 - Maximising your app revenueLee Stott
 
Updateshow Manchester April 2014
Updateshow Manchester April 2014Updateshow Manchester April 2014
Updateshow Manchester April 2014Lee Stott
 
Microsoft Office for Education
Microsoft Office for EducationMicrosoft Office for Education
Microsoft Office for EducationLee Stott
 
Microsoft Learning Experiences Skills and Employability
Microsoft Learning Experiences Skills and Employability Microsoft Learning Experiences Skills and Employability
Microsoft Learning Experiences Skills and Employability Lee Stott
 
Game Kettle Feb 2014 Gateshead
Game Kettle Feb 2014 GatesheadGame Kettle Feb 2014 Gateshead
Game Kettle Feb 2014 GatesheadLee Stott
 
GamesWest 2013 December
GamesWest 2013 December GamesWest 2013 December
GamesWest 2013 December Lee Stott
 
Microsoft Graduate Recuirtment postcard
 Microsoft Graduate Recuirtment postcard Microsoft Graduate Recuirtment postcard
Microsoft Graduate Recuirtment postcardLee Stott
 

Plus de Lee Stott (20)

Cortana intelligence suite for projects &amp; hacks
Cortana intelligence suite for projects &amp; hacksCortana intelligence suite for projects &amp; hacks
Cortana intelligence suite for projects &amp; hacks
 
Project Oxford - Introduction to advanced Manchine Learning API
Project Oxford - Introduction to advanced Manchine Learning APIProject Oxford - Introduction to advanced Manchine Learning API
Project Oxford - Introduction to advanced Manchine Learning API
 
Visual studio professional 2015 overview
Visual studio professional 2015 overviewVisual studio professional 2015 overview
Visual studio professional 2015 overview
 
Azure cloud for students and educators
Azure cloud   for students and educatorsAzure cloud   for students and educators
Azure cloud for students and educators
 
Getting coding in under a hour with Imagine Microsoft
Getting coding in under a hour with Imagine MicrosoftGetting coding in under a hour with Imagine Microsoft
Getting coding in under a hour with Imagine Microsoft
 
Create and manage a web application on Azure (step to step tutorial)
Create and manage a web application on Azure (step to step tutorial)Create and manage a web application on Azure (step to step tutorial)
Create and manage a web application on Azure (step to step tutorial)
 
Setting up a WordPress Site on Microsoft DreamSpark Azure Cloud Subscription
Setting up a WordPress Site on Microsoft DreamSpark Azure Cloud SubscriptionSetting up a WordPress Site on Microsoft DreamSpark Azure Cloud Subscription
Setting up a WordPress Site on Microsoft DreamSpark Azure Cloud Subscription
 
Imagine at Microsoft - Resources for Students and Educators
Imagine at Microsoft - Resources for Students and EducatorsImagine at Microsoft - Resources for Students and Educators
Imagine at Microsoft - Resources for Students and Educators
 
Porting unity games to windows - London Unity User Group
Porting unity games to windows - London Unity User GroupPorting unity games to windows - London Unity User Group
Porting unity games to windows - London Unity User Group
 
Visual Studio Tools for Unity Unity User Group 23rd Feb
Visual Studio Tools for Unity  Unity User Group 23rd FebVisual Studio Tools for Unity  Unity User Group 23rd Feb
Visual Studio Tools for Unity Unity User Group 23rd Feb
 
Unity camp london feb 2015
Unity camp london feb 2015Unity camp london feb 2015
Unity camp london feb 2015
 
Marmalade @include2014 Dev leestott Microsoft
Marmalade @include2014 Dev leestott MicrosoftMarmalade @include2014 Dev leestott Microsoft
Marmalade @include2014 Dev leestott Microsoft
 
E book Mobile App Marketing_101
E book Mobile App Marketing_101E book Mobile App Marketing_101
E book Mobile App Marketing_101
 
Game Republic 24th April 2014 - Maximising your app revenue
Game Republic 24th April 2014  - Maximising your app revenueGame Republic 24th April 2014  - Maximising your app revenue
Game Republic 24th April 2014 - Maximising your app revenue
 
Updateshow Manchester April 2014
Updateshow Manchester April 2014Updateshow Manchester April 2014
Updateshow Manchester April 2014
 
Microsoft Office for Education
Microsoft Office for EducationMicrosoft Office for Education
Microsoft Office for Education
 
Microsoft Learning Experiences Skills and Employability
Microsoft Learning Experiences Skills and Employability Microsoft Learning Experiences Skills and Employability
Microsoft Learning Experiences Skills and Employability
 
Game Kettle Feb 2014 Gateshead
Game Kettle Feb 2014 GatesheadGame Kettle Feb 2014 Gateshead
Game Kettle Feb 2014 Gateshead
 
GamesWest 2013 December
GamesWest 2013 December GamesWest 2013 December
GamesWest 2013 December
 
Microsoft Graduate Recuirtment postcard
 Microsoft Graduate Recuirtment postcard Microsoft Graduate Recuirtment postcard
Microsoft Graduate Recuirtment postcard
 

Dernier

Practical Research 1 Lesson 9 Scope and delimitation.pptx
Practical Research 1 Lesson 9 Scope and delimitation.pptxPractical Research 1 Lesson 9 Scope and delimitation.pptx
Practical Research 1 Lesson 9 Scope and delimitation.pptxKatherine Villaluna
 
Ultra structure and life cycle of Plasmodium.pptx
Ultra structure and life cycle of Plasmodium.pptxUltra structure and life cycle of Plasmodium.pptx
Ultra structure and life cycle of Plasmodium.pptxDr. Asif Anas
 
Drug Information Services- DIC and Sources.
Drug Information Services- DIC and Sources.Drug Information Services- DIC and Sources.
Drug Information Services- DIC and Sources.raviapr7
 
Presentation on the Basics of Writing. Writing a Paragraph
Presentation on the Basics of Writing. Writing a ParagraphPresentation on the Basics of Writing. Writing a Paragraph
Presentation on the Basics of Writing. Writing a ParagraphNetziValdelomar1
 
Quality Assurance_GOOD LABORATORY PRACTICE
Quality Assurance_GOOD LABORATORY PRACTICEQuality Assurance_GOOD LABORATORY PRACTICE
Quality Assurance_GOOD LABORATORY PRACTICESayali Powar
 
How to Show Error_Warning Messages in Odoo 17
How to Show Error_Warning Messages in Odoo 17How to Show Error_Warning Messages in Odoo 17
How to Show Error_Warning Messages in Odoo 17Celine George
 
How to Add Existing Field in One2Many Tree View in Odoo 17
How to Add Existing Field in One2Many Tree View in Odoo 17How to Add Existing Field in One2Many Tree View in Odoo 17
How to Add Existing Field in One2Many Tree View in Odoo 17Celine George
 
How to Add a New Field in Existing Kanban View in Odoo 17
How to Add a New Field in Existing Kanban View in Odoo 17How to Add a New Field in Existing Kanban View in Odoo 17
How to Add a New Field in Existing Kanban View in Odoo 17Celine George
 
DUST OF SNOW_BY ROBERT FROST_EDITED BY_ TANMOY MISHRA
DUST OF SNOW_BY ROBERT FROST_EDITED BY_ TANMOY MISHRADUST OF SNOW_BY ROBERT FROST_EDITED BY_ TANMOY MISHRA
DUST OF SNOW_BY ROBERT FROST_EDITED BY_ TANMOY MISHRATanmoy Mishra
 
The basics of sentences session 10pptx.pptx
The basics of sentences session 10pptx.pptxThe basics of sentences session 10pptx.pptx
The basics of sentences session 10pptx.pptxheathfieldcps1
 
How to Make a Field read-only in Odoo 17
How to Make a Field read-only in Odoo 17How to Make a Field read-only in Odoo 17
How to Make a Field read-only in Odoo 17Celine George
 
3.21.24 The Origins of Black Power.pptx
3.21.24  The Origins of Black Power.pptx3.21.24  The Origins of Black Power.pptx
3.21.24 The Origins of Black Power.pptxmary850239
 
P4C x ELT = P4ELT: Its Theoretical Background (Kanazawa, 2024 March).pdf
P4C x ELT = P4ELT: Its Theoretical Background (Kanazawa, 2024 March).pdfP4C x ELT = P4ELT: Its Theoretical Background (Kanazawa, 2024 March).pdf
P4C x ELT = P4ELT: Its Theoretical Background (Kanazawa, 2024 March).pdfYu Kanazawa / Osaka University
 
Patient Counselling. Definition of patient counseling; steps involved in pati...
Patient Counselling. Definition of patient counseling; steps involved in pati...Patient Counselling. Definition of patient counseling; steps involved in pati...
Patient Counselling. Definition of patient counseling; steps involved in pati...raviapr7
 
Human-AI Co-Creation of Worked Examples for Programming Classes
Human-AI Co-Creation of Worked Examples for Programming ClassesHuman-AI Co-Creation of Worked Examples for Programming Classes
Human-AI Co-Creation of Worked Examples for Programming ClassesMohammad Hassany
 
How to Manage Cross-Selling in Odoo 17 Sales
How to Manage Cross-Selling in Odoo 17 SalesHow to Manage Cross-Selling in Odoo 17 Sales
How to Manage Cross-Selling in Odoo 17 SalesCeline George
 
How to Use api.constrains ( ) in Odoo 17
How to Use api.constrains ( ) in Odoo 17How to Use api.constrains ( ) in Odoo 17
How to Use api.constrains ( ) in Odoo 17Celine George
 
UKCGE Parental Leave Discussion March 2024
UKCGE Parental Leave Discussion March 2024UKCGE Parental Leave Discussion March 2024
UKCGE Parental Leave Discussion March 2024UKCGE
 
Patterns of Written Texts Across Disciplines.pptx
Patterns of Written Texts Across Disciplines.pptxPatterns of Written Texts Across Disciplines.pptx
Patterns of Written Texts Across Disciplines.pptxMYDA ANGELICA SUAN
 

Dernier (20)

Practical Research 1 Lesson 9 Scope and delimitation.pptx
Practical Research 1 Lesson 9 Scope and delimitation.pptxPractical Research 1 Lesson 9 Scope and delimitation.pptx
Practical Research 1 Lesson 9 Scope and delimitation.pptx
 
Prelims of Kant get Marx 2.0: a general politics quiz
Prelims of Kant get Marx 2.0: a general politics quizPrelims of Kant get Marx 2.0: a general politics quiz
Prelims of Kant get Marx 2.0: a general politics quiz
 
Ultra structure and life cycle of Plasmodium.pptx
Ultra structure and life cycle of Plasmodium.pptxUltra structure and life cycle of Plasmodium.pptx
Ultra structure and life cycle of Plasmodium.pptx
 
Drug Information Services- DIC and Sources.
Drug Information Services- DIC and Sources.Drug Information Services- DIC and Sources.
Drug Information Services- DIC and Sources.
 
Presentation on the Basics of Writing. Writing a Paragraph
Presentation on the Basics of Writing. Writing a ParagraphPresentation on the Basics of Writing. Writing a Paragraph
Presentation on the Basics of Writing. Writing a Paragraph
 
Quality Assurance_GOOD LABORATORY PRACTICE
Quality Assurance_GOOD LABORATORY PRACTICEQuality Assurance_GOOD LABORATORY PRACTICE
Quality Assurance_GOOD LABORATORY PRACTICE
 
How to Show Error_Warning Messages in Odoo 17
How to Show Error_Warning Messages in Odoo 17How to Show Error_Warning Messages in Odoo 17
How to Show Error_Warning Messages in Odoo 17
 
How to Add Existing Field in One2Many Tree View in Odoo 17
How to Add Existing Field in One2Many Tree View in Odoo 17How to Add Existing Field in One2Many Tree View in Odoo 17
How to Add Existing Field in One2Many Tree View in Odoo 17
 
How to Add a New Field in Existing Kanban View in Odoo 17
How to Add a New Field in Existing Kanban View in Odoo 17How to Add a New Field in Existing Kanban View in Odoo 17
How to Add a New Field in Existing Kanban View in Odoo 17
 
DUST OF SNOW_BY ROBERT FROST_EDITED BY_ TANMOY MISHRA
DUST OF SNOW_BY ROBERT FROST_EDITED BY_ TANMOY MISHRADUST OF SNOW_BY ROBERT FROST_EDITED BY_ TANMOY MISHRA
DUST OF SNOW_BY ROBERT FROST_EDITED BY_ TANMOY MISHRA
 
The basics of sentences session 10pptx.pptx
The basics of sentences session 10pptx.pptxThe basics of sentences session 10pptx.pptx
The basics of sentences session 10pptx.pptx
 
How to Make a Field read-only in Odoo 17
How to Make a Field read-only in Odoo 17How to Make a Field read-only in Odoo 17
How to Make a Field read-only in Odoo 17
 
3.21.24 The Origins of Black Power.pptx
3.21.24  The Origins of Black Power.pptx3.21.24  The Origins of Black Power.pptx
3.21.24 The Origins of Black Power.pptx
 
P4C x ELT = P4ELT: Its Theoretical Background (Kanazawa, 2024 March).pdf
P4C x ELT = P4ELT: Its Theoretical Background (Kanazawa, 2024 March).pdfP4C x ELT = P4ELT: Its Theoretical Background (Kanazawa, 2024 March).pdf
P4C x ELT = P4ELT: Its Theoretical Background (Kanazawa, 2024 March).pdf
 
Patient Counselling. Definition of patient counseling; steps involved in pati...
Patient Counselling. Definition of patient counseling; steps involved in pati...Patient Counselling. Definition of patient counseling; steps involved in pati...
Patient Counselling. Definition of patient counseling; steps involved in pati...
 
Human-AI Co-Creation of Worked Examples for Programming Classes
Human-AI Co-Creation of Worked Examples for Programming ClassesHuman-AI Co-Creation of Worked Examples for Programming Classes
Human-AI Co-Creation of Worked Examples for Programming Classes
 
How to Manage Cross-Selling in Odoo 17 Sales
How to Manage Cross-Selling in Odoo 17 SalesHow to Manage Cross-Selling in Odoo 17 Sales
How to Manage Cross-Selling in Odoo 17 Sales
 
How to Use api.constrains ( ) in Odoo 17
How to Use api.constrains ( ) in Odoo 17How to Use api.constrains ( ) in Odoo 17
How to Use api.constrains ( ) in Odoo 17
 
UKCGE Parental Leave Discussion March 2024
UKCGE Parental Leave Discussion March 2024UKCGE Parental Leave Discussion March 2024
UKCGE Parental Leave Discussion March 2024
 
Patterns of Written Texts Across Disciplines.pptx
Patterns of Written Texts Across Disciplines.pptxPatterns of Written Texts Across Disciplines.pptx
Patterns of Written Texts Across Disciplines.pptx
 

Monogame and xna

  • 1. MonoGame and XNA in Teaching at Hull Rob Miles
  • 2. Agenda • Computer Science Teaching at Hull • Using XNA to Teach • XNA Overview • XNA and MonoGame • Targeting Platforms 26-Mar-13 2
  • 3. Computer Science Teaching at Hull 26-Mar-13 3
  • 4. Computer Science at Hull • We teach C# as a first language • We move into C++ and other languages in the Second Year • You can have our course for free if you like: www.csharpcourse.com 26-Mar-13 4
  • 5. C# Teaching Structure • We teach algorithms and programming in the first semester and then move into objects in the second semester • We’ve found that this works well, in that it keeps the focus on problem solving in the early stages 26-Mar-13 5
  • 6. C# and XNA • XNA is a framework for game creation • It is provided as a set of libraries and a content management system • It allows you to quickly create 2D sprite based games and can also be used as the basis of more ambitious work • You can even write shaders if you want 26-Mar-13 6
  • 7. Using XNA to Teach 26-Mar-13 7
  • 8. Using XNA in the course • We have found XNA useful for a number of reasons – It is a well thought out object framework that serves as a nice exemplar – It is very motivating for the students to be able to write games of their own – It provides a ready path to market (which quite a few students follow) 26-Mar-13 8
  • 9. Teaching with XNA • We spend one week of the second semester on XNA development • This introduces the LoadContent/Draw/Update behaviours and the fundamentals of game development • We also set a lab and coursework on XNA 26-Mar-13 9
  • 10. Having Fun with XNA • We use XNA as the basis of our “Three Thing Game” 24 hour game development events • We have also promoted it as the basis of MonoGame team entries 26-Mar-13 10
  • 11. XNA Overview 26-Mar-13 11
  • 12. HOW GAMES WORK • Every game that has ever been written has these fundamental behaviours: • Initialise all the resources at the start – fetch all textures, models, scripts etc • Repeatedly run the game loop: – Update the game world • read the controllers, update the state and position of game elements – Draw the game world • render the game elements on the viewing device
  • 13. METHODS IN AN XNA GAME • The XNA Game class contains methods that will provide these behaviours • Initialise all the resources at the start – The Initialize and LoadContent methods • Repeatedly run the game loop: – Update the game world • The Update method – Draw the game world • The Draw method
  • 14. GETTING STARTED WITH XNA • When you create a new XNA game project you are provided with empty versions of the game methods • Creating an XNA game is a matter of filling in these methods to get the game behaviours that are required • We are going to start by getting some clouds moving around the display • Then we are going to add some complication and see where it gets us
  • 15. Cloud and Games • Apparently the future of computing is “in the cloud” • Perhaps the future of games is too • We can start with a drawing of a cloud and see where this takes us • For me this is the fun of making games
  • 16. Creating a Game World // Game World Texture2D cloudTexture; Vector2 cloudPosition;
  • 17. Loading the Cloud Texture protected override void LoadContent() { spriteBatch = new SpriteBatch(GraphicsDevice); cloudPosition = new Vector2(0, 0); cloudTexture = Content.Load<Texture2D>("Cloud"); }
  • 18. MonoGame Digression • When we use MonoGame in Visual Studio 2012 we can’t actually process the textures directly in the project • We have to create the assets using an XNA project running under Visual Studio 2010 and copy them in • More on this later 26-Mar-13 18
  • 19. Drawing the Cloud Texture protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.CornflowerBlue); spriteBatch.Begin(); spriteBatch.Draw(cloudTexture, cloudPosition, Color.White); spriteBatch.End(); base.Draw(gameTime); }
  • 20. Drifting our Cloud Vector2 cloudSpeed = new Vector2(1.5f, 0); protected override void Update(GameTime gameTime) { cloudPosition += cloudSpeed; base.Update(gameTime); }
  • 22. Creating Game Components interface ISprite { void Draw(CloudGame game); void Update(CloudGame game); } // Game World List<ISprite> gameSprites = new List<ISprite>();
  • 23. The Cloud Class class Cloud : CloudGame.ISprite { public Texture2D CloudTexture; public Vector2 CloudPosition; public Vector2 CloudSpeed; public void Draw(CloudGame game) ... public void Update(CloudGame game) ... public Cloud(Texture2D inTexture, Vector2 inPosition, Vector2 inSpeed) ... }
  • 24. Making Random Clouds Vector2 position = new Vector2(rand.Next(GraphicsDevice.Viewport.Width), rand.Next(GraphicsDevice.Viewport.Height)); Vector2 speed = new Vector2(rand.Next(0, 100) / 100f, 0); Cloud c = new Cloud( cloudTexture, position, speed); gameSprites.Add(c);
  • 25. Updating Sprites protected override void Update(GameTime gameTime) { foreach (ISprite sprite in gameSprites) sprite.Update(this); base.Update(gameTime); }
  • 26. 2: Lots of Clouds
  • 27. Cloud Bursting Game • We could add a simple game mechanic so that players can burst the clouds by touching them • To do this our game must detect touch events This is very easy to do • Each cloud can check during its Update method to see if it has been burst
  • 28. Getting Touch Locations TouchCollection Touches; protected override void Update(GameTime gameTime) { Touches = TouchPanel.GetState(); foreach (ISprite sprite in gameSprites) sprite.Update(this); }
  • 29. Using Touch Locations foreach (TouchLocation touch in game.Touches) { if (touch.State == TouchLocationState.Pressed) { if ( CloudContains(touch.Position) ) { CloudPopSound.Play(); Burst = true; return; } } }
  • 30. Cloud Contains method public bool CloudContains(Vector2 pos) { if (pos.X < CloudPosition.X) return false; if (pos.X > (CloudPosition.X + CloudTexture.Width)) return false; if (pos.Y < CloudPosition.Y) return false; if (pos.Y > (CloudPosition.Y + CloudTexture.Height)) return false; return true; }
  • 31. Pop Sound Effect public SoundEffect CloudPopSound; ... SoundEffect CloudPopSound = Content.Load<SoundEffect>("Pop"); ... CloudPopSound.Play();
  • 33. Touch States • An active touch location can occupy one of a number of states: – TouchState.Pressed – TouchState.Moved – TouchState.Released • Each touch location also has a unique ID so that it can be identified throughout its lifecycle • This gives very good control of touch events at a very low level
  • 34. Flicking Clouds using Gestures • The touch panel also provides gesture support • We can use the gestures to allow the player to flick clouds around the sky • The game program can register an interest in gesture events • These are then tracked and buffered by the touch panel • Each gesture gives a particular set of information
  • 35. Registering for a Gesture TouchPanel.EnabledGestures = GestureType.Flick;
  • 36. Using a Gesture while (TouchPanel.IsGestureAvailable) { GestureSample gesture = TouchPanel.ReadGesture(); if (gesture.GestureType == GestureType.Flick) { waterCloud.CloudSpeed = gesture.Delta / 100f; } }
  • 38. Using the Accelerometer • You can also use the accelerometer to control the behaviour of objects in your game • The Accelerometer can measure acceleration in X, Y and Z • You can use just the X and Y values to turn it into a replacement for a gamepad • The values that are returned are in the same range – -1 to +1 in each axis • A value of 1 means 1G (G is the acceleration due to gravity)
  • 39. Accelerometer Events • The accelerometer in XNA is event driven • It generates events when new readings are available • You must bind a method to the event • The method can store the settings for later use • The code in an Update method can read the settings and use them to update the position of game objects
  • 40. Starting the Accelerometer Accelerometer accel; void startAccelerometer() { accel = Accelerometer.GetDefault(); if (accel != null) accel.ReadingChanged += accel_ReadingChanged; }
  • 41. Accelerometer Event Handler void accel_ReadingChanged(Accelerometer sender, AccelerometerReadingChangedEventArgs args) { lock (this) { accelReading.X = (float)args.Reading.AccelerationX; accelReading.Y = (float)args.Reading.AccelerationY; accelReading.Z = (float)args.Reading.AccelerationZ; } }
  • 42. Reading the Accelerometer Vector3 getAccReading() { Vector3 result; lock (this) { result = new Vector3(accelReading.X, accelReading.Y, accelReading.Z); } return result; }
  • 43. Acceleration and Physics Vector3 acceleration = game.getAccReading(); CloudSpeed.X += (acceleration.X * 0.1f); CloudPosition += CloudSpeed;
  • 46. MonoGame • MonoGame is an Open Source implementation of the XNA Game Development Framework • It is based on Version 4.x of the framework • It lets you take your XNA games into all kinds of interesting places 26-Mar-13 46
  • 47. Running MonoGame • MonoGame runs on top of the .NET framework • On Microsoft platforms this means that MonoGame just works • On non-Microsoft platforms this means that MonoGame must run on top of an installation of Mono which provides the .NET underpinnings – Although MonoGame is free, Mono is something you have to buy 26-Mar-13 47
  • 48. Platform Abilities • This is the current level of platform support • Note that this is continually changing 26-Mar-13 48
  • 49. XNA Games for Windows 8 • I’m going to focus on writing XNA games for Windows 8 • You can make proper Windows 8 versions of your games which will run on all Windows 8 platforms, including Surface RT 26-Mar-13 49
  • 50. XNA Games for Windows Phone 8 • You can also use MonoGame to make XNA games for Windows Phone 8 – However this is not as well developed as it is for Windows 8, and at the moment I don’t think you can put them in market place • For Windows 8 Phones you can still use XNA 4.0 and target Windows Phone 7.5 devices as well 26-Mar-13 50
  • 51. Getting Started on Windows 8 1. Install Visual Studio 2012 2. Install Visual Studio 2010 http://www.microsoft.com/visualstudio/eng/downloads 3. Install the Games for Windows Client http://www.xbox.com/en-US/LIVE/PC/DownloadClient 4. Install XNA 4.0 http://www.microsoft.com/en-us/download/details.aspx?id=23714 5. Install MonoGame http://www.monogame.net/ 26-Mar-13 51
  • 52. Making a MonoGame Project • Monogame adds new project types 26-Mar-13 52
  • 53. Running the application • You can run the application on your development device, in an emulator on your device or remotely debug it in another device – Including a Microsoft Surface  • You have to load the Debugging Tool into that to make it work 26-Mar-13 53
  • 54. Content Management • There is no support for creating content for MonoGame solutions • You have to use XNA for this 26-Mar-13 54
  • 55. Making Content • This is a rather convoluted process 1. Create the content (Image and Sounds) 2. Make an XNA 4.0 project using Visual Studio 2010 and load it with the content 3. Drop the XNB files from the XNA project into your MonoGame project 26-Mar-13 55
  • 56. Why we have to do this • XNA manages content by creating intermediate files from the images and sounds we give it to put in our game • These are the “.xnb” files • When the game runs on the target platform these content files are loaded • MonoGame only has the code that reads these content files 26-Mar-13 56
  • 57. Placing the Resources cheeseTexture = Content.Load<Texture2D>("cheese"); 26-Mar-13 57
  • 58. Content Management • You will need to make a Content folder in the MonoGame project • You will have to set the build action to “Content” for any content items that you add into this folder 26-Mar-13 58
  • 59. Windows 8 Features • MonoGame exposes the Windows interfaces in a similar way to the ones on Windows Phone – You get the touch screen, with gesture support, and the accelerometer • These are very easy to use in a game 26-Mar-13 59
  • 60. And so…. • Students like learning with XNA • Writing XNA from scratch for Windows 8 is easy • Converting existing XNA games is also easy • MonoGame provides a path to many markets, including Windows 8 26-Mar-13 60
  • 61. Resources • MonoGame http://www.monogame.net/ • Mono Project http://www.mono-project.com • Me http://www.robmiles.com 26-Mar-13 61