2D Video Games with MacRuby

of 128
11 views
PDF
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Document Description
1. rubyconf 2009 2d video game development with MacRuby matt aimonetti Sunday, November 22, 2009 2. test your memory Sunday, November 22, 2009 3. Sunday, November 22,…
Document Share
Document Transcript
  • 1. rubyconf 2009 2d video game development with MacRuby matt aimonetti Sunday, November 22, 2009
  • 2. test your memory Sunday, November 22, 2009
  • 3. Sunday, November 22, 2009
  • 4. Sunday, November 22, 2009
  • 5. Sunday, November 22, 2009
  • 6. Sunday, November 22, 2009
  • 7. Sunday, November 22, 2009
  • 8. Sunday, November 22, 2009
  • 9. Sunday, November 22, 2009
  • 10. Sunday, November 22, 2009
  • 11. Sunday, November 22, 2009
  • 12. Sunday, November 22, 2009
  • 13. Sunday, November 22, 2009
  • 14. Sunday, November 22, 2009
  • 15. Sunday, November 22, 2009
  • 16. Sunday, November 22, 2009
  • 17. Sunday, November 22, 2009
  • 18. Sunday, November 22, 2009
  • 19. Sunday, November 22, 2009
  • 20. Sunday, November 22, 2009
  • 21. Sunday, November 22, 2009
  • 22. Sunday, November 22, 2009
  • 23. Sunday, November 22, 2009
  • 24. Sunday, November 22, 2009
  • 25. Sunday, November 22, 2009
  • 26. Video Games are fun Sunday, November 22, 2009
  • 27. Ruby Programming is fun Sunday, November 22, 2009
  • 28. You have a mac Sunday, November 22, 2009
  • 29. (if not, get one!) Sunday, November 22, 2009
  • 30. video games on OSX OLD SCHOOL from scratch Sunday, November 22, 2009
  • 31. truth Sunday, November 22, 2009
  • 32. Sunday, November 22, 2009
  • 33. Sunday, November 22, 2009
  • 34. Sunday, November 22, 2009
  • 35. but Sunday, November 22, 2009
  • 36. Sunday, November 22, 2009
  • 37. Sunday, November 22, 2009
  • 38. popular games Sunday, November 22, 2009
  • 39. Massively Multiplayer online role-playing games (MMORPG) Sunday, November 22, 2009
  • 40. Sunday, November 22, 2009
  • 41. Sunday, November 22, 2009
  • 42. Sunday, November 22, 2009
  • 43. too much work for a hacking project Sunday, November 22, 2009
  • 44. first person shooter Sunday, November 22, 2009
  • 45. Sunday, November 22, 2009
  • 46. Sunday, November 22, 2009
  • 47. Sunday, November 22, 2009
  • 48. new types of games Sunday, November 22, 2009
  • 49. Sunday, November 22, 2009
  • 50. Sunday, November 22, 2009
  • 51. online games Sunday, November 22, 2009
  • 52. Sunday, November 22, 2009
  • 53. Sunday, November 22, 2009
  • 54. Sunday, November 22, 2009
  • 55. iphone games Sunday, November 22, 2009
  • 56. Sunday, November 22, 2009
  • 57. Sunday, November 22, 2009
  • 58. demo Sunday, November 22, 2009
  • 59. MacRuby Sunday, November 22, 2009
  • 60. Ruby for SCottish Sunday, November 22, 2009
  • 61. Laurent Sansonetti Sunday, November 22, 2009
  • 62. Sunday, November 22, 2009
  • 63. Sunday, November 22, 2009
  • 64. on obj-c runtime and GC Sunday, November 22, 2009
  • 65. COCOA Apple's Objective-C based programming environment for Mac OS X Sunday, November 22, 2009
  • 66. VIDEO GAME Sunday, November 22, 2009
  • 67. Sunday, November 22, 2009
  • 68. Sunday, November 22, 2009
  • 69. keyboard Sunday, November 22, 2009
  • 70. key event keyboard Sunday, November 22, 2009
  • 71. key event keyboard GameData Sunday, November 22, 2009
  • 72. Sunday, November 22, 2009
  • 73. game loop Sunday, November 22, 2009
  • 74. game loop 174 ❶ update layers Sunday, November 22, 2009
  • 75. game loop 174 ❶ update layers update game items Sunday, November 22, 2009
  • 76. game loop 174 ❶ update layers repositionupdate game items Sunday, November 22, 2009
  • 77. game loop 174 ❶ update layers repositionupdate game items ❷ collisions Sunday, November 22, 2009
  • 78. game loop 174 ❶ update layers repositionupdate game items ❷ collisions lives points sound Sunday, November 22, 2009
  • 79. LOOP playDATA GAME Sunday, November 22, 2009
  • 80. GAME PLAY Sunday, November 22, 2009
  • 81. ⇧ ⇧ ⇧ ⇧ Sunday, November 22, 2009
  • 82. NSView subclass Interface Builder Sunday, November 22, 2009
  • 83. NSView subclass Interface Builder Sunday, November 22, 2009
  • 84. class KeyboardControlView < NSView def keyDown(event) end end Sunday, November 22, 2009
  • 85. class KeyboardControlView < NSView def keyDown(event) end end ⇧ ⇧ Sunday, November 22, 2009
  • 86. acceleration Sunday, November 22, 2009
  • 87. relative positioning Sunday, November 22, 2009
  • 88. Sunday, November 22, 2009
  • 89. GAME LOOP Sunday, November 22, 2009
  • 90. usual workflow Sunday, November 22, 2009
  • 91. usual workflow Sunday, November 22, 2009
  • 92. video game Sunday, November 22, 2009
  • 93. video game Sunday, November 22, 2009
  • 94. 30 x per second Sunday, November 22, 2009
  • 95. moves player moves objects resolves collisions updates score/level redraws graphics plays sounds Sunday, November 22, 2009
  • 96. module GameLoop def start_refreshing @timer = NSTimer.scheduledTimerWithTimeInterval 0.03, target: self, selector: 'refresh_screen:', userInfo: nil, repeats: true end def refresh_screen(timer=nil) #… end end Sunday, November 22, 2009
  • 97. NSTimer.scheduledTimerWithTimeInterval 0.03, target: self, selector: 'refresh_screen:', userInfo: nil, repeats: true cocoa class method time interval method to call on the target some stuff we don’t care about ;) Sunday, November 22, 2009
  • 98. IntervalTimer.new(0.03, :target => self, :selector => 'refresh_screen:') Sunday, November 22, 2009
  • 99. def refresh_screen(timer=nil) GameData.all_layers.each{ |layer| layer.update } collided_bombs, collided_rubies=GameData.collisions if !collided_bombs.empty? loose_a_life collided_bombs.each{|layer| layer.item.reset! } else collided_rubies.each do |layer| GameData.increase_points(layer.item.points) points.attributedStringValue = GameData.points.to_s layer.item.reset! end SoundEffects.collision(0.2) unless collided_rubies.empty? level_change! if change_level? end end Sunday, November 22, 2009
  • 100. GameData.all_layers.each do |layer| layer.update end Sunday, November 22, 2009
  • 101. collided_bombs, collided_rubies = GameData.collisions Sunday, November 22, 2009
  • 102. def collide_with?(other_rect) NSIntersectsRect(rect_version, other_rect) end Sunday, November 22, 2009
  • 103. if !collided_bombs.empty? loose_a_life collided_bombs.each do |layer| layer.item.reset! end Sunday, November 22, 2009
  • 104. else collided_rubies.each do |layer| GameData.increase_points(layer.item.points) update_points_display layer.item.reset! end Sunday, November 22, 2009
  • 105. unless collided_rubies.empty? SoundEffects.frog(0.2) end level_change! if change_level? end Sunday, November 22, 2009
  • 106. module SoundEffects module_function @frog = NSSound.soundNamed("Frog") def frog(delay=0) @frog.performSelector(:play, withObject: nil, afterDelay: delay) end end Sunday, November 22, 2009
  • 107. GAME DATA Sunday, November 22, 2009
  • 108. Sunday, November 22, 2009
  • 109. module GameData module_function end Sunday, November 22, 2009
  • 110. class GameController def awakeFromNib GameData.register_controller(self) end end Sunday, November 22, 2009
  • 111. GameData.all_layers Sunday, November 22, 2009
  • 112. class GameController def display_item(item) new_layer = ImageLayer.alloc.initWithItem(item) GameData.all_layers << new_layer # [...] end end Sunday, November 22, 2009
  • 113. module GameConfig module_function def data @data ||= { :levels => [ { :name => 'Pond', :rubies => 3, :bombs => 12, :score_limit => 30, :vehicle => 'nenuphar', :bomb_image => 'bomb', :bomb_ratio => 1, :ruby_ratio => 1.5, :player_width => 0.2, :player_height => 0.2 }] } end Sunday, November 22, 2009
  • 114. cocoa hax Sunday, November 22, 2009
  • 115. CocoaClass =~ RubyClass Sunday, November 22, 2009
  • 116. don’t like an API? Sunday, November 22, 2009
  • 117. Wrap it Sunday, November 22, 2009
  • 118. class NSButton def title_color=(color) current_font = self.attributedTitle.attribute(NSFontAttributeName, atIndex: 0, effectiveRange: nil) opts = { NSForegroundColorAttributeName => color, NSFontAttributeName => current_font } self.attributedTitle = NSAttributedString.alloc.initWithString( self.title, attributes: opts) end end Sunday, November 22, 2009
  • 119. compilation Sunday, November 22, 2009
  • 120. Sunday, November 22, 2009
  • 121. PATH="$PATH:/usr/local/bin" macruby_deploy "$TARGET_BUILD_DIR/ $PROJECT_NAME.app" --embed --no-stdlib --compile Sunday, November 22, 2009
  • 122. wanna hack? Sunday, November 22, 2009
  • 123. best score post score Sunday, November 22, 2009
  • 124. gosu framework Sunday, November 22, 2009
  • 125. chipmunk physics Sunday, November 22, 2009
  • 126. http://github.com/ mattetti/phileas_frog Sunday, November 22, 2009
  • 127. Sunday, November 22, 2009
  • 128. Thanks Sunday, November 22, 2009
  • We Need Your Support
    Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

    Thanks to everyone for your continued support.

    No, Thanks
    SAVE OUR EARTH

    We need your sign to support Project to invent "SMART AND CONTROLLABLE REFLECTIVE BALLOONS" to cover the Sun and Save Our Earth.

    More details...

    Sign Now!

    We are very appreciated for your Prompt Action!

    x