sonoftheflame-00to20-2x

Community.push (“sonoftheflame”)

sonoftheflame was the first player I interviewed in this series. It turns out, he had read one of my articles on reddit and he asked me if I was “that bonziaferroni”. It looks like he picked an excellent room: two sources with plenty of access and amazing defense characteristics. Without further ado, here is our chat:

Q. How did you hear about Screeps?

A. I first saw Screeps in the Steam store. It seemed interesting but also a little intimidating so I just wish-listed it. It was brought back to my attention when I saw it in the humble bundle. Having “discovered” reddit between then and now I decided to check out the subreddit and after reading about the Screeps Warfare Championships I thought that the game itself looked quite fun and decided to give it a go.

Q. Screeps seems to attract a wide variety of players, from complete beginners to hobbyists to professionals. What level of programming experience are you starting out with?

A. As far as actual object oriented programming my prior experience was with a couple of semesters of python 4+ years ago back in school. On the other hand, I do work for a web hosting company so bash scripting, mysql queries, and a small amount of php make regular appearances in my day.

Q. I know some people are here to learn, some for the coding challenges, some for world domination, and some for all of the above. What would you say are your biggest motivations for playing the game?

A. It started as a neat way to learn JavaScript, but once I got into the thick of it I found myself doing the same thing that I end up doing in normal 4x or RTS games, continually trying to make my setup more efficient and streamlined.

Q. I know you’ve only been playing for a short time, but what are some of the biggest challenges you’ve run into so far?

A. One of the biggest challenges so far has been trying to understand the error outputs in the console. In the emails generated by the live world I now see that it includes the module and line number of the error, but in the simulation room where I did my initial testing that information was not included. Something minor is that the simulation room with its 4 sources spoiled me and I was not expecting the 1 and 2 source rooms I found in the starter areas.

Q. When I’m playing, sometimes I’ll be working on a problem and I’ll have a breakthrough. Either my code suddenly starts working as intended or I have a really good idea that I want to try out. Have you had any “eureka” moments so far?

A. Prototypes! Not coming from an strong object oriented background at first prototypes were kinda like black magic. The tutorial helped with adding methods and properties to existing prototypes, but creating “new”/”original” prototypes didn’t seem to make any sense to me. Some of the initial investigation wasn’t much help as the official JavaScript docs were over my head as a beginner, and the other sources I felt that I kinda understood seemed to have quite different ways of doing things. After just diving in and just trying things out (see: breaking everything and then tweaking things until they worked) I finally figured out getters & setters and that the boundaries between functions and objects was a lot fuzzier that I thought. I still have a way to go, but getting my first prototypes working was quite a rush.

Q. We are learning here. Do you have any particularly funny moments to share about your learning process? Code gaffes, silly bugs, sudden realization that Screeps already has pathfinding… too late.

A. I had an issue where all throughout the spawning process a certain role of creep would have the correct role saved in its memory, but as soon as it was done spawning the role would change. I put all sorts of console.log entries all throughout my code just to try and pinpoint how it was possibly happening. Eventually I found out that in a custom property I had added to the room prototype, I had added I had only used a single = and was changing the creep’s role rather than testing it.

Q. How about the resources available for new players — from the official documentation to the articles/guides that other players have created — Do you find them to be sufficient? Were there any that seem to be particularly helpful? Any gaps or resources you’d like to see?

A. The tutorials, docs, and API docs have all been incredibly helpful. For outside resources, in addition to your CPU clinic on github I have also found the Screeps Profiler (https://github.com/screepers/screeps-profiler) vastly helped me better understand CPU and how to work with it. I got a big help concerning how to actually get additional prototype methods/properties added from thPion on github (https://github.com/thPion/Screeps-Nooby-Guide/tree/Part7AdvancedSpawningAndPrototypes). For more general JavaScript information w3schools.com’s section for JavaScript has been essential in understanding what is available from JS itself and I would recommend it to anyone and everyone.

For what I would like to see more of in the docs would probably be more in-depth information on “creating” prototypes in addition to the existing information about modifying existing prototypes, and more information on how things that are in main.js but outside the export loop are handled. I’m still working on understanding that.

Q. In about a month I’ll be doing a follow-up article and it will cover some of your progress over that time. What things do you plan to work on? Any goals in mind?

A. I have been peeking into other player’s rooms to see if any of their behavior appears “better” than what I am currently doing (such as separating harvesters and haulers) so too much forecasting is tough, but currently I am working on further reducing my CPU use, improving/creating active offence & defenses, figuring out extractors and the market, and automating the placement and building of basic structures such as roads, walls, ramparts, and extensions

Share this post

Share on facebook
Share on google
Share on twitter
Share on linkedin
Share on pinterest
Share on print
Share on email