Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Hello CocosSharp
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Mike Bluestein
October 11, 2014
Technology
190
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Hello CocosSharp
Mike Bluestein
October 11, 2014
More Decks by Mike Bluestein
See All by Mike Bluestein
Intro_to_Scene_Kit.pdf
mikebluestein
1
130
Other Decks in Technology
See All in Technology
最新技術に積極チャレンジ!EKS共通基盤のこれまでとこれから
daitak
0
300
いかに伝えるか 〜新卒エンジニアの教育のための、ライトノベル活用の一例
ikedon
1
180
本番に近いテストをもっと手軽に - Postmanで広がるAPIテストの世界 / Expanding the World of API Testing with Postman
yokawasa
1
240
『止めない』を設計する — 制約の中で、事業の根幹を支える判断
hiroyaterui
0
140
PfEingのアプローチで働こう
rindrics
0
160
Bet AI Day 2026丨Production-Ready AI Agents — エンタープライズの実務を任せるための設計と運用
layerx
PRO
3
1.9k
[RSJ26] NarrativeFlow: Flow-Based Vision-Language-Action Model Using Robot Velocity Fields
keio_smilab
PRO
0
140
Claude Codeで開発以外の業務も爆速化しよう!
minorun365
PRO
12
9.6k
Self Healing Rollouts: Automating Production Fixes with Agentic AI
kdubois
0
140
Instana&Bob トラブルシュートハンズオン
mayamasaki68
0
110
Bet AI Day 2026丨How We Bet AI: AIとともに働く場をつくる
layerx
PRO
1
2.1k
Genie Code ワークショップ 応用編 / Genie-Code-Workshop-advanced
databricksjapan
PRO
0
290
Featured
See All Featured
We Are The Robots
honzajavorek
0
330
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.6k
Building an army of robots
kneath
306
46k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
How to build a perfect <img>
jonoalderson
1
5.9k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
560
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
390
HDC tutorial
michielstock
2
840
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
400
Raft: Consensus for Rubyists
vanstee
141
7.7k
Transcript
Hello CocosSharp Developer Evangelist @mikebluestein Mike Bluestein
“CocosSharp blends the power of the Cocos2D programming model with
C# and the .NET Framework…the API has been designed to follow C# and .NET idioms.” Miguel de Icaza Xamarin
“It’s so cool” Mike Bluestein Xamarin
Cross Platform
What Makes Up the Game • Application • Scenes •
Layers • Sprites • Actions • Other cool stuff - Particle systems, audio, physics …
CocosSharp API
CCApplication • Creates and initializes the graphics device • Sets
the application delegate • Starts the game
var app = new CCApplication (); app.ApplicationDelegate = new
GoneBananasApplicationDelegate (); app.StartGame (); CCApplication
• Handles application lifecycle • Similar to UIApplicationDelegate in iOS
• Set the application’s content folder • Load the main window’s first scene CCApplicationDelegate
public virtual void ApplicationDidEnterBackground (CCApplication application) public virtual void
ApplicationDidFinishLaunching (CCApplication application, CCWindow mainWindow) public virtual void ApplicationWillEnterForeground (CCApplication application) CCApplicationDelegate
Content Folder Project Folder Containing Resources ▪ Fonts ▪ Sounds
▪ Images Set via application’s ContentRootDirector application.ContentRootDirectory = "Content";
CCDirector Window.DefaultDirector.ReplaceScene (GameLayer.GameScene (Window)); • Available via Window.DefaultDirector • Manages
any additional scene loading
CCDirector
CCDirector
CCScene • Manages game logic for various portions of the
game • Contains layers (CCLayer)
CCScene • Manages game logic for various portions of the
game • Contains layers (CCLayer)
CCLayer • Added to scene • Contains node tree (sprites,
labels, menus, etc) • Schedule method to run code at repeated interval • Creates the scene for which it is a child
CCLayer var scene = new CCScene (mainWindow); var layer =
new GameStartLayer (); scene.AddChild (layer); return scene;
• Sprites are nodes that create images in the game
• Image file must be in Content folder • Include high definition image using -hd convention CCSprite
• Efficient sprite loading • Renders all children CCSpriteBatch
CCAction • Actions perform tasks on nodes • For example,
animating sprites • Can run multiple actions sequentially using CCSequence
CCTouch • Encapsulates a touch on the screen • Set
TouchEnabled to true in layer • Override touch methods in layer ▪ TouchesBegan, TouchesMoved, TouchesEnded, etc
Accelerometer • Available via CCAccelerometer • Access with Window.Accelerometer
Window.Accelerometer.Enabled = true; var listener = new CCEventListenerAccelerometer(); listener.OnAccelerate =
DidAccelerate; AddEventListener (listener); public void DidAccelerate(CCEventAccelerate accelEvent) { accelEvent.Acceleration.X; accelEvent.Acceleration.Y; accelEvent.Acceleration.Z; } Accelerometer
Audio • SimpleAudioEngine.SharedEngine ▪ Sound Effects ▪ Background Sound •
Pause/Resume background sound in CCApplicationDelegate ▪ Pause when app enters background ▪ Resume when app enters foreground
Drawing Primitives • CCDrawNode • Draw lines, polygons, circles, etc
…
var draw = new CCDrawNode(); draw.DrawPolygon( star, star.Length,
new CCColor4F(1, 0, 0, 0.5f), 1, new CCColor4F(0, 0, 1, 1)); Drawing Primitives
Particle Systems • Graphical effects by rendering a set of
particles • Several built in - smoke, galaxy, rain, … • Can add custom particle systems
var sun = new CCParticleSun (pt); sun.StartColor = new CCColor4F
(CCColor3B.Red); sun.EndColor = new CCColor4F (CCColor3B.Yellow); Particle Systems
var sun = new CCParticleSun (pt); sun.StartColor = new CCColor4F
(CCColor3B.Red); sun.EndColor = new CCColor4F (CCColor3B.Yellow); Particle Systems
Parallax • CCParallaxNode • Children move at different relative speeds
Parallax • CCParallaxNode • Children move at different relative speeds
var parallaxClouds = new CCParallaxNode { Position = new CCPoint
(0, h) }; float yRatio1 = 1.0f; float yRatio2 = 0.5f; parallaxClouds.AddChild (cloud1, 0, new CCPoint (1.0f, yRatio1), new CCPoint (100, -100 + h - (h * yRatio1))); parallaxClouds.AddChild (cloud2, 0, new CCPoint (1.0f, yRatio2), new CCPoint (250, -200 + h - (h * yRatio2))); Parallax
Effects • Lots of visual effects • Waves, Twirl, Lens3D,
Shuffle Tiles, … • Implemented using actions
var flipx = new CCFlipX3D(t); CCFiniteTimeAction flipx_back = flipx.Reverse(); var
delay = new CCDelayTime (2); return new CCSequence(flipx, delay, flipx_back); Effects
Physics • 2D Rigid Body Physics • C# port of
Box2D • world, body, shape, fixture
var def = new b2BodyDef (); … b2Body body =
world.CreateBody (def); var circle = new b2CircleShape (); … var fd = new b2FixtureDef (); fd.shape = circle; … body.CreateFixture (fd); Physics
Demo
Gone Bananas Demonstrates Many CocosSharp Features ▪ Parallax ▪ Particles
▪ Touch handling ▪ Physics ▪ Sprite creation ▪ Actions ▪ Scene transitions ▪ Sprite sheet animation ▪ Sprite batching
CocosSharp Resources • Source - github.com/mono/CocosSharp • Samples - github.com/mono/cocos-sharp-samples
Thank You! Mike Bluestein @mikebluestein