Skip to main content

My first week experience and my first task!

Hello, it's nice to talk to you again! 
This is my first week after being accepted into ScummVM and I have a lot to talk about, so let's get started. A little sidenote - Originally, I thought to update my blog once every two weeks and that it would be a good idea, but I just really wanted to update you guys with my exciting first week! 

I was reading my fellow GSoC student's introductory blog post when I realized that the introductory blog post is also meant to introduce a person, something I completely forgot in my first post.

Yes, that's right, I forgot to introduce myself - in my introductory blog post. You read that right - but I hope that you didn't find it rude, I was just really excited to be a part of ScummVM for this summer, and somehow forgot what I was supposed to write! Let's do it right this time before we move on to my first week's experience!

Introduction

Hiya! I am Aryan Rawlani, a Computer Science student in Ahmedabad, India. I am 19 years old and I'll be graduating in a month or two from my university!

I'm passionate about Software engineering and I entered my high school knowing that this was what I wanted to do, so Computer Science was the perfect fit for me in my College!

I love:
- Anime!
- To play video games (even though I have a potato pc, and games released after 2012 won't run)
- Game Development
- Japan and Korea, and want to visit those places one day, so I'm learning Japanese and Korean!
- Reading interactive novels

My First Task!

My first task for the summer is to prepare an RTL version of our GUI. (RTL means Right To Left, and many languages - eg: Hebrew, Arabic - are written and read in this way.)
Accomplishing this task will mean that people from all over the world who use RTL languages will find ScummVM easy to use and will find themselves right at home with this layout! (Get it? "right" at home?)

I already started on my work, and have achieved a good little amount of progress! If you're wondering why I've already started working on my project, even though it's still community bonding period - it's because of 2 reasons:

1) When I got my acceptance in GSoC, I was really happy but was a little anxious about my skills - unsure if I could do it. Spoiler alert - I'm now confident I can do it, because of my hands-on experience this week and my fantastic mentors!

2) I think the best way to bond would be nothing better than to start contributing!

This week, I'm also communicating with @Mataniko and @ZvikaZ in the ScummVM community - they are native Hebrew speakers. To gain a better understanding of how things should work, it's nice to talk and ask advice from people who speak those languages!

Let's start by comparing the main screens of our current stable build and my dev build.

https://imgur.com/yLCoADM
(Left - Stable LTR build)      [HighRes]        (Right - Dev RTL build)

You'll notice the RTL build looks like it was mirrored. At the basics, that's exactly what happens when we add support for RTL languages. We need to carefully follow some special rules and exceptions. For now, most of the work on the main screen is done.

If you're interested in the guide I'm following to get a better understanding - it's this Material.io's guide on bidirectionality.

It might look easy, but ScummVM does not follow an arithmetic calculation, point-based GUI. Instead, it uses a custom relative based GUI which parses itself from an XML themed package, so the work was a little difficult!

Let's see one other screen - "Edit Game" dialog.
Dev Build - RTL Layout, EditGame Window

Does this look a little bit off? "Why do I choose the option first and then see the label?"

Well, to an RTL language user, the screen above would be the most comfortable. Since I am not a speaker in any RTL based languages, I am testing this with English. (Some bugs still need to be fixed, for example - the text needs to be right-aligned in editable text fields and dropdowns will be on the left side)

As a general rule of thumb, a developer in ScummVM (@SupSuper) told me that:
"What I (as an LTR user) see first, the other person (as an RTL user) should also see first."
I think that's fantastic advice and helped me a lot in understanding how to work.

The original build (LTR) looks like this:
Stable build - LTR Layout, EditGame Window

The overlay window of the RTL based dialog took me a lot of time to figure out, but I finally cracked it around 5 AM yesterday! Mouse collisions and a lot of things are working as expected! There's still work to do and bugs to squash, but I think it's a good little progress!

My first interactions with the community:

The past week has been nothing short of amazing. My mentors are really sweet and nice, and the community is so welcoming! They're very active on our communication platform, so it's very easy to communicate.

If I summarize my view of the organization:
I'm part of an organization that relates to my interests, uses the tech-stack I love to work in, communication is really easy and on a great platform, my mentors are really sweet, and the community is very nice!

I think I may have just hit the jackpot...

Sidenotes

Before I depart, I'd like to tell you a little about my fellow GSoC students! (The ones who are accepted in the same organization as me).

"Gunnar" will work on porting the Wintermute 3D engine to our sister organization ResidualVM. (Gunnar's Blog).

"Nathanael" and "Dylan" will be working on the Director engine.
(Nathanael's Blog) & (Dylan's Blog)

If you'd like, you can check out their work too. And if you want to see all our experiences collectively in one place - we have ScummVM Planet.

Summary

  • I spent a good amount of time every day working, around 5-6 hours (except for one cheat day where I just sat staring at the screen for an hour and gave up for the day). It really does feels like a full-time job, but it's very flexible - I usually work at late night!
  • I faced a little difficulty at the beginning in communication, because I wanted to try hard by myself before I asked questions. Now I'm very comfortable with - my mentors, the community, and asking questions!
  • I have a good grasp of the ScummVM codebase, particularly with how the GUI works and a good understanding of how things work in general, as well as coding conventions, rules.
I'm very happy about my choice to apply to ScummVM!

This was a long post, sorry about that! From the next time onwards - it'll be geared more towards my tasks, but I was excited to let you guys know about my background, my thoughts on first week with ScummVM, and a little about my student mates! I'll try to keep it a little short from next time.

Next time, I'll see you with some polished and feature-complete pictures, and let's hope I progress a little on my next task too!

If you have any thoughts - I'll be looking forward to your comments!


Thanks for reading! 



Comments

Popular posts from this blog

I got accepted into GSoC!

Hello World GSoC!A start of a wonderful journey, and I'm a part of it! I'm pleased to announce that my proposal has been accepted to GSoC 2020! 
From coding "Hello World", to making small projects, to being a part of ScummVM's GSoC student is fascinating. You know, honestly speaking, I didn't think I would make it. I started my GSoC proposal late, around 19th March. I sent in the first mail to my potential mentor then - and crafting a great proposal usually takes many days. Regardless of the proximity to the deadline, I worked as hard as I could to make a decent proposal, and on 4th May - that hard-work reflected an essential part of my life!
This is my first ever professional experience, and things look a little scary but I have fantastic mentors. Eugene "sev" Sandulenko - the current project lead of ScummVM & John "DJWillis" Willis - team member of ScummVM since 2006. In fact, they're so qualified that it's almost overwhelming! …

ScummVM plugins - The new task

Hello! This week, I got started with my new task - "Moving detection features to the executable".

What is the task? ScummVM has over 50 engines that support many - many games. Currently, when compiled - these engines can either be compiled directly inside the scummvm executable (statically linked) or packed inside small packages of external libraries that can be loaded on demand (dynamic linking)

So, why would we even opt for external libraries? Wouldn't packing everything into the executable give the best performance? Well, yes. But the thing is, ScummVM has a lot of platforms it supports (ScummVM Platforms) over 30! It's very portable, which is one of the really amazing features of ScummVM. With dynamic plugins, the executable sizes are lowered. Because of this, when we need to detect games - each engine is loaded by one and the relevant detection happens. This is slow.

The main purpose of this task is to move the detection related features to the executable, i.e …