Winter (2D game development framework) was presented last year in in an early stage of development, this year it bring us some new features.
It comes with some new architecture changes, but also 2 new important features: Animations and Native Deployment.
3. ❆ What is Winter?
❆ Updates
❆ Demo
❆ Future Work
4. ❆ A framework to develop games in 2D.
❆ An easy and didactic way to create games in Smalltalk.
❆ Very easy to use, no complex configurations
Smalltalks 2017 talks: https://smalltalks2017.fast.org.ar/talks
5. Sound and Music DONE
Sprites DONE
User Input Management DONE
Assets Management DONE
Native Deployment DONE
Animations DONE
Screen abstraction DONE
2017
6. ❆ New Architecture:
× Updating and Rendering Management
× Animations management
× Screen abstraction with view models
❆ Code clean up
9. ❆ Tiled Maps https://doc.mapeditor.org/en/stable/
❆ Camera
❆ Back to Chipmunk2D (or another physics library)
❆ Network API (Lan & Online)
❆ Particles Effect
This talk is about some updates made to Winter framework but focused on two main new features: Animations and Native deployment
This is me. My name is Alvaro Piorno, I am studen at National University of Quilmes in Buenos Aires and I am Smalltalk Developer at Mercap.
I will talk about this main topics:
-What is Winter?: In this topic i will give you am overview of what was Winter about and in what state of development was last year for then to introduce you to the next topic.
-Update: In this topic i will tell you what are the updates made to Winter since last year at the point we left in the previous topic.
-Demo: Then i will show you a game where the new features can be seen, and then i will debug something to show you a bit of the framework working.
-Future Work: Finally i will talk about the next features i am planning to do and why
Winter is a framework to develop games in two dimensions. I made emphasis in the word “develop” because my philosophy is that the developer must develop, and winter is a tool for developers.This may sound very obvious, but there is another kind of tool to create games(Game Engines) where you don´t have to code to much, and Winter is not that.
It is an easy and also didactic way to create games in smalltalk. I made emphasis in the word “didactic” not because i pretend it to be a tool for teaching only but because i pretend the programmer just to focus on the game logic and not in the game structure and flow that will be the same in all games. This, in my opinion, will make Winter a very didactic tool.
It is very easy to use, and does not have any extra configuration. You need just to install it in a clean image and start to use it, this enforces the didactic proposal.
For further information you can check my talk of the last year in this link.
This are the current covered features. The first four features were done and shown last year, so i will not talk about them this time.
The first new feature is “Native deployment” and this consist in deploying the game in a native os window and not on a morph inside the image as before.
The second is “Animations” and as this is 2D, it consists in a tecnique to create the illusion of movement or changes using static images.
The last one is “Screen abstraction” and it consist in an generic easy way to create different screens without thinking about all the set up for the native os window , for example character selection, game customization, etc.
I will extend this explanation in the next slide.
This are updates that i don,t consider directly as new features:
Winter has a new architecture mainly in this 3 point:
Updating and Rendering Management now is handled by a Scheduler on a new process or thread. Before this, updating and rendering was managed by events sending all around the “system” but in my opinion, the code was mixing some concepts that should now be mixed. Now is separeted and more clear.
Animations Management: This is one of the new features but the way of managing this is the same the previous one( a Scheduler on a new process or thread)
Screen abstraction with view model: This is the feature i wanted to extend here, it consists in only one screen rendering and updating its interchangeable model. This model can be an object of the view model hierarchy or the game itself, this particular objects will render widget mostly and the game will render its elements. They are polimorphic respect of rendering and updating. For example, if you finished selecting your character then the model is changed to the game and now you are playing the game.
And finally some code clean up.
Tiled Maps is the first in the list not for being the most inmportant but because it is half finished. It consist in a kind of “inteligent maps” , in stead of putting a background image or putting each element in its postion by hand, you create a tiled map. The tiled maps have layers, each layer has a grid with tiles or objects. All the layers are rendered by default but you can cahnge that and render none of them or some of them, to create different effect. Object layers are not shown but can be used to automatically detect collision with static points in the map. For further information: link.
Camera is the most important feature by now, because ones it is developed Winter will handle nearly all type of 2D game. The camera feature in 2D will provide the posibility to create games wheres some elements or characters move through the map out of the screen vision.If your character move out of it too, the actual vision of the screen will change too. You can also tell the camera to follow the character and it will be always centered or you can see you r character from front or from top for exmaple.
At it's begining Winter had physics handled by a Native Library, and because of some problems i decided to simulate in smalltalk. But i will change that again, physics represents a very hard and heavy work that should not be handled in Smalltalk, and a lot of efficiency is lost.
Network API to let lan and online games be created with winter. I have not decided anything about this implementation yet.
Particles effect is not a very needed feature but gives games more realism( considering we are in 2D), this consist in a technique using a alrge number of very small sprites to simulate "fuzzy" phenomena, which are otherwise very hard to reproduce with conventional rendering techniques( example bonfire)