Pages

Thursday, October 3, 2013

İş Bulma Macerası

Uzun süredir Türkçe yazı yazmıyordum. Aslında bu yazıyı da İngilizce yazmayı planlıyordum. Fakat daha çok Türkiye'yi ilgilendirdiği için ve de ileride birilerine bilgi sağlayabilir diye bu fikrimi değiştirdim.

İş ilanlarına bakmaya geçen yaz başlamıştım. İlgimi çekenleri yaptığım listelere atıyordum. Bu işlere ikinci dönemde başvururum diye düşünüyordum. Not aldığım iş ilanları genelde oyun geliştirmeyle ilgiliydi ve çoğu Avrupa'daydı. Ben de seçmeli derslerimin çoğunu oyun geliştirmeyle alakalı olanlardan almıştım. Bitirme projesinde online multiplayer oyun yapıyorduk. Bütün bunlar ışığında kendime bu konuda güveniyordum. Türkiye'deki oyun şirketlerinde de açık pozisyonlar olduğunu bulmuştum. İşler genelde Flash ağırlıklıydı. Ben de Flash oyun yapmama rağmen kendimi Unity ile daha rahat hissediyordum.

Avrupa'da genelde Almanya'daki işlere bakmıştım ve onlara başvurmuştum. Üzücüdür ki neredeyse bütün şirketlerden ret cevabı almıştım. O kadar çok yere başvurup reddedildikten sonra ret maillerinin nasıl yazılacağını öğrendim: "We regret to inform you that ..." Bu mailleri aldıktan sonra moralim bozulmuyordu demek isterdim fakat bu haberler yüzümün asılmasına  ve günümü morali bozuk şekilde geçirmeme yetiyordu. En kötüsü de iş bulamayacağımı düşünmeye başlıyordum. Nitekim de öyle oldu ve oyun şirketinde iş bulamadım. 

Kafamda bir planlama yapmıştım. İlk başta yurtdışındaki işlere başvuracaktım daha sonra yurtiçindekilere. Türkiye'deki işlere başvurmaya planladığımdan geç başladım. Nedeni ise Almanya'daki Goodgame Studios ile yaptığımız uzun görüşmelerdi. Bu şirket bana geri dönmüştü ve benden transkript, referans mektubu ve örnek kodlar istemişlerdi. İstediklerini yolladıktan sonra da telefon görüşmesi yapmak istemişlerdi. Bu haberi aldıktan sonra deli gibi heyecanlanmıştım ve de ister istemez hayaller kurmaya başlamıştım. Telefonda konuşacağımız için bir not kağıdı hazırladım. Kendimi anlatan ufak bir paragraf, yaptığım şeyleri anlatan bir paragraf, sevdiğim oyunların isimleri ve onları neden sevdiğimi anlatan bir paragraf vardı. Hatta ne olur ne olmaz diye sevdiğim ve sevmediğim üç özelliğimi bile yazmıştım. Görüşme saati akşamdı ve o kadar heyecanlıydım ki hayatım boyunca kalbimin o kadar hızlı attığını hatırlamıyorum. Vakit geldi ve görüşmeyi yaptık ve tam bir hayal kırıklığıydı. Hazırladığım notlarla ilgili hiçbir şey sormamışlardı. Telefonu kapattığımda işe alınmayacağımı biliyordum.

Görüşmede çok enteresan olaylar oldu. Mesela bana "Not ortalaman çok iyi. Neden yüksek lisans yapmıyorsun?", "İkinci yabancı dil olarak neden İspanyolca seçtin?" gibi sorular sordular. Bu soruları soran kişi insan kaynaklarındandı ve daha sonra telefonu teknik ekipten birine verdi ve onunla konuşmaya başladım. Duyduğum en kötü İngilizcelerden biriydi. Onlara CV'mi yollamama rağmen, bana CV'mde yazmayan şeyleri bilip bilmediğimi sordu sadece. Mesela CV'de hiç yazmamasına rağmen bana SVN kullanıp kullanmadığımı sordu. Bütün bunlar sonucunda beklenen oldu ve olumsuz bir geri dönüş geldi. Biraz üzülmeme rağmen işe aldıkları adama gelişme şansı sunmayan bir şirket olduğunu düşünüp içimi rahatlattım. Daha sonra Wooga'dan da transkriptimi ve örnek kodlarımı isteyen mail aldım. Fakat altı ay geçmesine rağmen hala bir cevap alamadım.

Artık Türkiye'deki işlere başvurma zamanı gelmişti. Ve o kadar reddedildikten sonra moralim çok bozuktu. Türkiye'de ilk olarak Peak Games'e başvurdum. Birçok pozisyon vardı ve ben bana en uygun olan New Graduate Programme'ı seçtim. Başvurudan iki hafta geçmesine rağmen cevap yoktu. Sitelerine bir daha girdim. Jobs sayfası değişmişti ve artık JobVite destekliydi. Ben de başvurumu maille yapmıştım. "Heralde artık maille başvuru almıyormıyorlar." deyip bir kere daha başvurdum. Hala geri dönüş yok.

Sonra Game Developers Turkey'in Facebook sayfasında bir ilan dikkatimi çekti. İlan Tart Games'indi ve Unity'ci arıyorlardı. Facebook'a futbol oyunu yapıyorlardı. Yaptıkları oyunu oynadım hemen. Daha betaydı ve benim bitirme projeme çok benziyordu. Hatta oyundaki bazı hataları görünce benim de bitirme projemde aynı tür sıkıntılar yaşadığım geldi aklıma. Oraya da başvuru yaptım. Ve onlardan da herhangi bir mail gelmedi. 

Bazen röportajlarda görüyorum, oyun şirketi sahipleri "Türkiye'de kalifiye eleman bulamıyoruz." gibi şeyler söylüyorlar. Bu bana çok samimiyetsiz bir yorum olarak geliyor artık. 

Şimdi ise kariyer gününe katıldığım ve oyunla alakası olmayan bir şirkette çalışıyorum. "Çalıştığım yerde yaptığım şeylerden tatmin oluyor muyum?", "Beklentilerimi karşılıyor mu?" gibi tehlikeli sorular sormamaya çalışıyorum kendime. Oyun geliştirmeden de çok uzaklaştım ister istemez. Şimdi kendimi işten kalan zamanlarda geliştirmeye çalışıyorum. Online dersler alıyorum. Şimdi 10gen'in verdiği MongoDB dersini alıyorum ve fırsat buldukça Python kurcalıyorum. Web geliştirmeye tekrar ilgi duymaya başladım diyebilirim.

Artık daha fazla Türkçe yazı yazmak istiyorum. Bakalım neler olacak?

Sunday, August 11, 2013

Maven - A great tool

Let's say you are going to make a project that uses MySQL as a database and Hibernate as a persistence tool. Importing the jars of those into Eclipse can be hard and challenging sometimes. At this point, Maven shows up and gives a hand. What Maven does is downloading the dependencies of the project automatically.


How can it do this? Well, when you create a maven project, it generates pom.xml file. You are going to write dependencies (the jars that our project needs) of your project into pom.xml and Maven will do the rest. In pom.xml, you have to write dependencies in a certain template which is:

<dependency>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</dependency>

But how can you fill this template? At this point Maven Repository saves our lives. You will search what you need for your project in that website. After choosing the version you want, you will see a page that shows the filled template for your pom.xml (for example: mysql-connector). Finally when you update the project, you will see that dependencies are added.

You can download Maven plugin to your Eclipse as applying followings:
  • Go to Help->Install New Software...
  • Paste this link to the Work with: area.
  • And you're done.

Friday, August 2, 2013

Simple Advice From A Friend

Hello everyone (including Russian bots who are very obsessed with this website). I've found a job, unfortunately not in game industry. I'm not sure if I should be happy or sad about this.

In this period of time, I discovered the thing that hurts most of the people including me. I made this mistake and still making over and over again. And now I'm trying to warn people who makes this mistake. I'm telling this thing with a meme to make things interesting.


I will write a detailed post about my job-searching-and-finding journey later.

Sunday, June 9, 2013

Tweevio - Last YouTube videos shared on Twitter

Some of you may know that I was working on a project called Tweevio. Tweevio is a website that shows last YouTube videos that are shared on Twitter. My goal was both develop my web programming skills and provide a website which people can discover new videos.

I couldn't work on this project for a long time. But I had completed the Javascript and jQuery part but it was aesthetically poor. I was free lately and I said to myself "It's time to go back and finish what you started". After this motivational moment, I decided to learn HTML and CSS. I was going to need those to make the web page beautiful. Before, my relationship with HTML and CSS was literally like this. I couldn't do I wanted to do. For that reason, I was getting bored quickly and unfortunately this was resulted in giving up. But this time I was determined. And here is the result:

* Dropbox mirror. It may not work on every browser.

It's not a final version. It's very minimalist now and I want to add some colors to it. And there is a huge empty space on left-side. I don't know how to use the page efficiently for a website like this. Sometimes, page is not acting right because of the Japanese and Chinese tweets, I guess they occupy more space. Other than those, I think it is not a bad beginning for the web programming.

I had made a list of what I am supposed to do for this project. And it turns out that it was a very bad idea. Planning on the things that you don't know really good is not working as expected. It gives general idea but it can be misguiding at the same time. For example, I didn't know that every link in Twitter is converted to a short url which is start with t.co and for that reason I needed another plug-in to lengthen that t.co url.

While I was making this, these stackoverflow questions helped me a lot while I was working on this project.

PS: David Bowie rocks!
UPDATE (13.06.2013) Twitter upgraded its API to the new version. That's why currently Tweevio is not working.

Saturday, June 1, 2013

AI in Computer Games Project

Hey everybody, this is the video of the AI project that I wrote about on previous post. The video says a little bit about what we've done. I hope you like it.




Thursday, May 30, 2013

I survived!

In my last post, I mentioned how busy I am and how busy I will be. Today, I've completed all of the things that I mentioned in that post. And I feel very relaxed. I'm planning to write about this period and also I want to share my experiences about the projects I've made. But first, let me enjoy being free.

By the way, tomorrow will be the last day of my entire university life. I still can't figure out is it a good or bad thing.

Monday, April 22, 2013

Long Time No See - Part II

Generally this time of the semesters, I cannot update my blog. There are always documents to write and projects to finish. In this semester, I am very busy with senior project. I also have to make a project for AI in Computer Games class. I did a little bit progress on that but need to do more. There are five weeks to the end of the semester and I have to finish all of the assignments/projects/documentations.

And this means that there are few weeks for my graduation. This is kind of stressful because in the meantime, I need to find a job. I even got rejected from one of the companies that I applied. I really thought that I would be hired but after the phone conversation I feel that I'll be rejected. But anyway this is not the first, won't be the last. That was my first phone interview and I was so excited. Actually, this was a nice experience.

As I said there are tons of things to do and not many weeks. I believe that I'll pull it off. By the way the idea of graduation is so EXCITED, WOOHOO!!!

Sorry, in this post there won't be any images.

Saturday, March 9, 2013

Screenshot Saturday - Fresh as Fish

GangFight is a side-scrolling shooter game that I started to make a few days ago. It will be like old school arcade games. Also, I'm planing to add melee combat.

I will report weekly the development process and share images, videos, experiences. All these will be under the title of Screenshot Saturday. This week I will be presenting the images for characters and backgrounds. Of course, they're placeholder and as you can guess I draw them all by myself. It is better to use these kind of place holder images rather then one-color squares or circles. It's all about motivation I think.

Let's see the first drawings for the game.

The main character. The coolest bad-ass gang member ever. And he never gives up smoking even in a fight.

A member of Gang-H. Obviously, this gang have some fashion problems. And they're one of our enemies.

 The only road that you can see Ceasers Palace, El Capitan and Palms Casino side by side. This is also first scene of the game.

I'm making this game by using Java and Slick. And on the programming side, so far I made the followings:
  • Movement of player
  • Shooting towards the direction between player and mouse.
  • Basic enemy spawner
  • Main menu

So many things about the game is uncertain. There are a lot of things that I haven't started to think about. In this time, I want to be spontaneous and unorganized. For that reason, the game may be changed entirely in future.

[UPDATE] Now code for this project is on my Github. Fork me!

Thursday, February 21, 2013

Visualization of A* Algorithm - Final Version

Actually, I finished this project nearly a month ago but since I'm so lazy lately, I can write a post and put the program here at this moment. You can find more information about this project here my previous blog post.

Since then, all of the improvements were about GUI, adding load maze property and fixing bugs. As a GUI, I added radio button set which is used to replace starting and destination nodes and put obstacles.

After making some tests on the map, I encountered a problem. Since the algorithm can spread on every direction, the scenarios like in the image can create unwanted situations. Technically speaking, this is caused by diagonal search of neighbor nodes.


To avoid that, I added a radio button which enables and disables diagonal movement. Here is the new result of the same scenario. In this case, neighbor search is done only horizontal and vertical directions.


Other than these, I wanted to add an extra property which is loading maze to the map. With it, users can choose predefined mazes according to their difficulties. These are easy maze, medium maze, hard maze and dead-end maze. To do this, I used the idea of tile maps. I created txt files which includes numbers which are 0, 1, 2 and 3. Each of the numbers has its own node type. 0's are the normal nodes, 1 is the starting node, 2 is the destination node and 3's are the obstacle nodes.

0 0 0 0 0 0 0 0 0 0 0 0
 1 0 0 0 0 3 0 0 0 0 0 0 
0 0 0 0 0 3 0 0 0 0 0 0
0 0 0 0 0 3 0 0 0 0 2 0
0 0 0 0 0 3 0 0 0 0 0 0
This is an example of a txt file that includes nodes' information.

On the Java side, I'm going through all numbers in the file with two for loops and prepare the new state of the nodes according to the number that is read from the file.

In the class that I made this project for, as a difference, our professor wanted us to write software design document before starting project. Also at the end of the project, we wrote unit tests and user manual. I have to admit that I really didn't like writing these documents. Also, writing tests for the code that I wrote didn't sound meaningful to me. Maybe the idea for writing tests for others' code would be more meaningful. But, in a very limited time that couldn't be possible.

And of course images of the program:





You can download the executable jar here. Loading maze is not working in this version. Because it is using another folder which has maze files.

Before finishing the post I would like to share the links that gave me idea about how I should set up the GUI and choose colors.
http://www.ccg.leeds.ac.uk/people/j.macgill/xaStar/
http://www.youtube.com/watch?v=FNRfSQDF7TA

Wednesday, February 20, 2013

Game and gamedev websites

In this post, I will write some of my favorite web sites about indie games and game development.

News websites about indie games

Articles/Blogposts
(You can find extremely technical to the very high-level posts in altdevblogaday.)
(Most of the articles requires premium. There are free ones as well.)

Subreddits about games and game development
(There are very useful and awesome posts in these subreddits.)

Friday, February 8, 2013

My first attempt to mobile game development - Crazy Tic-Tac-Toe

There was  a mobile game development conference which was given by the creators of Gideros Mobile. Gideros Mobile is a platform that allows you to make Android and iOS games. And it uses Lua as a scripting language. 

After this conference, I wanted to make something and play it on my phone. That would be a different experience. And I chose Tic-Tac-Toe to start with. Because it doesn't require so many detailed sprites and relatively easy to code. Also it is really convenient to be played in touchscreen devices. Because players just tap on a square that they want to put an X or O.

After I started to develop, I saw that Gideros has a really nice documentation and forum. If you want to start mobile game developing, you should give it a try.

Here are the screenshots of the game: 


In-game images that shows the proceeding of the game.

Wednesday, January 23, 2013

Tweevio - What and how?

I really like doing something with Twitter API. Last year, while I was trying to learn Python, I wrote a script that receives the trending topics in Twitter. (You can see the code here.)

Now I'm planning to do a project with using Twitter API again. Actually, I'm thinking on it very long but I have a chance to make it happen at this moment. I even gave a name for it: Tweevio.

Tweevio will show the last Youtube videos that are shared in Twitter. Yes, that simple.

After this convincing explanation of the project, let see how I'm planing to do this project:

I think I have to use Youtube API for playing videos. Also, I'm planning to use jQuery library. Actually, I don't know jQuery but in CodeAcademy there are really good tutorials. I will follow those tutorias to have an idea. The reason I choose jQuery is to make my job easier on sending HTTP request and JSON parsing.

Before starting this project, I separated the things that will be done into simple tasks. Here they are:
  • Send HTTP request to Twitter Search API. And store the response in a variable. (Youtube.com, youtu.be will be searched in tweets.)
  • Parse the JSON which will come as response and extract Youtube links from it. (Maybe using regular expressions.) 
  • Write a simple website which just has an input box and button. This website will show the Youtube video whose url is entered in input box.
  • Prepare a very simple website with Twitter Bootstrap. (Use placeholder images.)

This is the design of the site created with Balsamiq Mockups.

Tuesday, January 22, 2013

Plans for semester break

  • I want to follow Scala course on Coursera which is given by Martin Odersky. I have no functional programming experience. I want to enter into this area with this course.
  • I will look over Play! framework which is used to build web applications with Scala and Java.
  • I will also follow jQuery and API lessons in CodeAcademy. In CodeAcademy, in order to pass a course, you have to write codes and complete missing parts. I think it's a great way to learn.
  • I have a little project which uses Twitter API. I want to complete it. Also I will write a blog post about it.
To accomplish all the things above can be difficult. Because, I have bad experience about these kind of todo lists. I can get bored and leave the things that I'm working on. Related to this, a few days ago I saw a video on Facebook. I think the guy in the video has a point. I will give ear to things the guy emphasizes. I think you should check this out, too.


Friday, January 18, 2013

Download Manager Project - Bash scripting

The download manager is the project that I made for UNIX Scripts and Utilities course. I used bash scripting and dialog. Dialog is for the GUI of the project.

The reason that I chose this project is sometimes I download lecture slides of courses that I'm interested in. For example, since MIT opened the most of their courses, I want to download the lecture files to see how they go over the courses and what the homeworks are. Downloading whole files by clicking every link was exhausting. At this point my project is lending a hand to make things easier.

Actually you can download files from a web site by using wget command. To download specific types of files like pdf files, you can give the extension of the file with -A parameter. Let's see an exampe of this.

       wget -r -A.pdf http://www.cs.ozan.edu/~yildiz/prog101/

This command will download all pdf files in the given website which is supposed to include lecture slides or homeworks.

Since the aim of the project is using grep, sed, awk, cut and provide GUI to the user, I should have used something else. And I came up with this:

How does the script work?
  • After a user enters comma-separated urls of web pages, the script keeps a list of urls by using awk command.
  • The script has a loop to iterate over those urls.
  • Then, the source of a web pages is downloaded with wget -k -O command. -k parameter is to convert all relative paths to absolute path.
  • Then, grep extracts these absolute paths by looking file extensions and write them into a file. (The extensions of the files that are going to be downloaded is predefined.)
  • Another loop downloads all files one by one. Also download bar is increasing when a file is downloaded.
  • The script also keeps the history of the downloaded files.
And of course images of the project:

This is the part that user enters links.

Downloading screen. We are able to see the file that is being downloaded.

I put the codes to my gist. Click here to see the code. You can add new file extensions to be downloaded by modifying extensions variable.

Sunday, December 2, 2012

Visualization of A* Algorithm - A Java Project

As I mentioned in the last post this semester I'm doing a Java project which is Visualization of A* Algorithm. Because of the exams, I couldn't spare time to improve it. I did some in this weekend. I redesigned the class structure because a class was doing things that it shouldn't do. I added one more class and it is more object-oriented right now.

When I did the first version - before the improvements above - I showed it to my professor. He wanted me to add the spreading of the algorithm in every step. In this way, we are able to see how the algorithm works. To do this, I had to sleep the algorithm for awhile in every step. And I added sleep into the function which finds the path. But it didn't work as I expected. Because GUI slept, too. After a little search, I found that I had to make thread programming to fix that problem. My program was executing in a single thread, when I sleep a function, GUI was sleeping, too. The thing that I have to do was dividing the program into two pieces, first is the piece that shows the GUI elements and the second is the piece that does calculations for algorithm.

I know a little bit of thread programming from my Operating Systems course. We also did a lab to learn better. We were using C, you can find the code for that here. In Java, thread programming was easier than I thought. After doing that, program was working correctly.

Now, I have to study to understand algorithm better. I am little bit confused because of heuristic part of algorithm. The heuristic is directly affecting the algorithm, choosing the right heuristic is the main issue of A*.

Here is some images from the project;


Initial position of starting and destination nodes. Later, users will be able to change their positions.



Spreading of algorithm. Light gray nodes are in closedList. Dark blue nodes are in openList. Calculating g value of neighbors is like this:
currentNode.g + 10 for horizontal and vertical neighbors
currentNode.g + 14 for diagonal neighbors
And Manhattan heuristic is used.

When I finish this project, I'm planning to open the source code. I will probably share the codes on Github.

Saturday, November 3, 2012

Long Time No See

I haven't written something for more than a month. I have reasons for that. I've been busy with some paperwork for senior-year project which I will give more information in another post later.

What am I doing?

I'm busy with loving my Unix class. I always wanted to go little deep on the subjects of Unix. This is being happened in my Unix class and I'm happy with that. Moreover my professor gave me a GNU sticker. Woohoo!


I'm also spending time on my Java project which is a course project. I'm doing Visualization of A* Pathfinding Algorithm. We'll submit this project at the end of the semester. But I started early and did some improvements. Actually, this algorithm was another thing I always wanted to learn. I knew that this is also highly used in games. That's why I wanted to learn.

Finally, I will share a screenshot of that project which is an inevitable ending of my posts.


Sorry about the color choices. Green node is the starting node, red one is the destination node. Yellow ones are the walls that the path cannot pass through. Pink ones show the shortest path. User will be able to change the places of starting and destination nodes. Also they will be able to put walls wherever they want. 

Thursday, September 20, 2012

G.I.F.T.

As I promise, I'm going write something about my new game: G.I.F.T. actually new version of the ice cube game. In G.I.F.T. we are controlling a kid and helping him to get his gift. Base mechanics remained same. We are controlling him by sliding on the surface. I've uploaded the game on kongreate and newgrounds. (Kongregate link - Newgrounds link to play the game.)

Here is how I converted an old game to a new one.

First, I started with changing the character. I wanted it to be a kid. And I started to draw something. First, I thought the kid as a stickman figure. But I didn't like that and I changed my idea. Then I applied some colors and I got this result:


This was my first attempt to draw something for my game.

Than I started to make tiles. In my mind, there was winter atmosphere for the game. For that reason, I made snowy tiles. And I used gradient effect for the background image. This is the tileset that I've made:


And a snowball which is an obstacle:


I know that they're not so good. But making them was so fun for me. Also, using them in a game was a great experience.

I also made some jumping sounds. It can be hardly noticed because its volume is low. That's because I recorded them by using a cheap microphone.

Now, some technical stuff:

I made all the levels as a different class which derives from FlxState. I chose this way because reseting was too easy. Just a line of code which is FlxG.resetState(). But I couldn't put a loop music to the game, because when it resets the game, it also resets the music. For that reason, maybe this decision wasn't that useful. I think whole game must be in just one state to fix this problem. Reseting can be done with setting all variables' values to thier first values. Another bad thing is that I wrote almost same things for the all of the levels. In the ice cube project, I wrote a Level class and derived all levels from this class. I think this way is better and more object-oriented.

I hope you have fun while playing G.I.F.T. and please rate and leave comments.

Monday, September 17, 2012

Ice Cube Has Gone

From the beginning, I didn't like the idea of ice cube game. But I liked the base mechanics of it. For that reason, instead of making new game I wanted to change and enhance it. I've been working on it for more than a week. The game has changed entirely. I think it's better than the previous idea.

I will give more information about the new idea soon. For now, I'm putting an image which reflects the game directly.



Tuesday, September 4, 2012

JURUMP - My first game

Yes, Jurump is my first game. Me and Efe Alaçamlı made it together. Click here to read his blog post about Jurump. (Link for the game is below this post.)

We made this game in fall, 2011 for the course called Introduction to Computer Games. This is the course which I meet game programming and love it. Obviously, this was my favourite course, I always looked forward to this course whole week. Other than those, another thing that I remember is how excited and enthusiastic I was. I hope these never ends.

Let's talk about the game now. It's side scrolling 2D platform game. We are trying to save Ali, who is the main character, from alien invasion. He is on the roof of the buildings during this escape. He shouldn't fall into the gaps between buildings and hit aliens. Also, there are four bonuses he can take. These are super jump, temporary protection, speed up and whistle. The goal of the game is finishing the levels faster.

We programmed this game in Java and used Slick2D library. This was a good and rough experience. I remember that we had trouble coding jumping. Because we wanted to simulate gravity in a right way. The character was shaking when he touches the ground. But we did some value changing and solved the problem.

And finally this game came out:


We made this "How to play" screen but some people didn't go there and they never used the bonuses. 






Click here to download the game. Java gives security warning, click no to play.