SoC2014 SDL2 DrawingTransition

From The Battle for Wesnoth Wiki

This page is related to Summer of Code 2014
See the list of Summer of Code 2014 Ideas

This is a Summer of Code 2014 student page

Michael Lojkovic SDL2 Image handling transition

Summary of Proposal I am interested in working on updating the version of SDL used to 2.0. I'd like to help with transitioning the classes responsible for drawing to the screen to SDL 2.0's style.

First-Level Section I plan on doing this through using the easier to work with functions that do not require surfaces. I currently have experience at doing this from moving the sample code in Game Engine Design and Implementation to using SDL 2.0. In particular making it less dependent on SDL_Surfaces for creating textures. I currently have experience with the basics of moving from a surface based drawing method to using SDL_Textures for the majority of the code. Through this project I'll gain additional understanding of accelerated drawing in SDL 2.0, and how it may benefit you.




1. Basics 1.1. I'm Michael Lojkovic. Over the past couple of years I've been learning Game Design and implementing Game Design, as well as how to code the designs I've come up with. I've found having a solid understanding of Object Oriented Design to be highly valuable for getting ideas from the paper prototype stage to actually running in a timely manner. When I'm not coding or designing games, I love watching a myriad collection of different movies.

1.2. The best Email address to contact me at is

1.3. My IRC and Wesnoth nick is Zerophase

1.4. I'm mostly interested in participating in summer of code, so I may gain additional experience on Object Design before starting my senior project next year. I'd also like to build my own engine one day for 2D games, and find working on another engine to be a great learning experience for how to design my classes.

1.5. I'm a second bachelor degree student at Columbia College Chicago studying Game Design. With the extra credits I have left over from not needing to take non-department courses I've been signing up for every programming class possible.

1.6. I'm from the United State, in Illinois. I'll most likely be able to get on IRC in the Central Timezone afternoon.

1.7. Currently, I do not have any other commitments, but I'll be applying to all available internships in my field during the next week. I'll go with which ever organization takes me first.

2. Experience

2.1. I have experience scripting in Unity, using MonoGame for making games, Drawing and implementing AI behaviors for a breakout game in Open Frameworks, and working with SDL 2.0 on top of other coding experience.

2.2. Yes, I've worked on games with teams both in class and out of class on personal projects. Currently, the developer Lost Engine, which I'm a part of has a few games at Columbia College Chicago's GDC booth. In particular I've worked on an Oculus Rift game, Split, with them.

2.3. I've never been involved with the Google Summer of code before.

2.4. I'm currently not involved with developing an open source project, but I have experience with using open source libraries.

2.5. Yes, I do enjoy gaming.

2.5.1. I'd describe myself as a gamer who likes to take in as much of game as it has available. Not only do I enjoy solving the challenges, in game that provide something tangible within the game world, but I also love to explore the worlds and understand the systems running the mechanics at a theorycrafting level.

2.5.2. I play pretty much every genre, but mostly focus on RPGS, MMOS, Action titles, and Adventure Games.

2.5.3. I prefer the tough opponents that challenge me, but on occasion I do enjoy fighting against those that reinforce how far my skill set has come since I've started playing a title.

2.5.4. I say I probably prefer story, and am willing to forgive less engaging gameplay for a well written narrative. I do happen to think that quality gameplay is of absolute importance for an effective title. In this vein I think both gameplay and story should work together to support each other. With one setting the scenario for the other, and the other creating the events that lead to that piece of the game.

2.5.5. I have not played Wesnoth. In fact, I only heard of it through Google Summer of Code. The category of game Wesnoth falls under is what has partially sparked my interest in this title.

3. Communication Skills

3.1. My fluency in written English is at the level of a college graduate, who majored in the writing intensive discipline of Philosophy.

3.2. I'm just fluent in English.

3.3. In all of the games I've played (MMOs in particular) I've found I can get along with the majority of players I run into in guild and groups. While on occasion I do get frustrated with players for not following explicitly written instructions for encounters, I'm able to communicate effectively with the majority of the player base in games like WoW. I've also found Guild members get along with me. I find this comes down to my dependability and ability to show competency in chosen class play.

3.4. I attempt to give constructive advice when ever possible.

3.5. I do receive advice well. I might not always take it in the end, but I always attempt to understand the others position, and at the very least explain why that direction is different from my intended direction on a project.

3.6. Yes, I'm good at figuring out which criticism leads me to a concise answer to an issue, and ignoring those that do not line up with the intended project direction. Of course, if the project direction isn't working out as intended I become more open to those switches in direction.

3.7. When coding I like to understand enough about the library to get started on developing with it. I've found learning different means of solving problems from books to be helpful with leading me towards the correct design decision, but actually coding to be even better at knowing when to use which coding technique over another. I like to get code implemented to be extensible and flexible for project needs as much as possible on first go. While that isn't always possible, the actual act of coding has helped me find general solutions for common problems with code bases, and each new project I start out a step closer to a flexible implementation.

4. Project

4.1. I selected the SDL 1.2 to SDL 2.0 migration from your list. I'd like to focus on moving the drawing methods to SDL 2.0.

4.3. I choose this project, since I'd like to get additional experience in developing an engine, and find working on someone else's engine to be the most helpful for eventually developing my own.

4.4. I'll have much of the SDL 1.2 code replaced with 2.0 in the first month or two, so the project can compile, and from the time after that and during I plan on fixing any bugs that migration has caused with drawing to the screen.

4.5. As far as I know, so far much of the transition to 2.0 involves replacing instances of SDL_Surfaces with SDL_Textures, and using those and their related methods for drawing to the screen. So far, with working with SDL 2.0 it seems like you only need SDL_Surfaces as local variables on occasion. I don't yet know many of the needed features for using accelerated drawing and would like to improve my knowledge base through this project.

4.6. I expect to learn much about how to render to the screen with SDL 2.0, some good design for the classes related to rendering, and how i might take this experience forward for personal engine projects.

4.7. The game having an engaging story, and on top of that me having time to devout to a game like this, which sounds like it takes a considerable time commitment. On the development end I'd stay involved by having projects that keep feeding me additional information on how to design a game engine.

5. Practical Considerations 5.1 I know Git, a lot about working with C++, (Though, there's always a new feature to learn.)STL, some Boost, SDL. I don't know Python, but the code samples I've seen seem fairly understandable. I do know some Ruby. I still need to learn CMake, and don't know WML. In the AI class I'm taking I will learn some Lua, by the end of the semester.

5.2. Currently, I mostly use VS 2013 Ultimate, since it's intellisense and code formatting for C++ is pretty good and I get it through school. I also use Unity, since it's the engine the school teaches, and it's good for prototyping.

5.3. C++, C#, and I know some Ruby. I've also translated Java code to C#, and find them fairly similar with some massaging the code needed here and there.

5.4 My number is in the submit.

This page was last edited on 21 March 2014, at 09:50.