This has been a really great assignment for me this semester. Throughout my experimentation in Google Sheets I have gained a much greater understanding of the different ways that formulas can be used to make Google Sheets into a very powerful program. To be honest, I feel that I only really scratched to surface of what is possible. It looks like there 300+ formulas possible through the basic functions of sheets (let's not even talk about what I've seen some people do using Google Scripts) and I think that I have figured out. Some of my favorites, though, have been:
Looking back at some of the questions that I hoped to answer I've been successful with some, and less so with others. I thnk that I have answered more than I've left unanswered and many of them I can answer now, even if I never implemented the answer to the question into the game (yet). Going through the questions in order from my declaration blog:
Again, this was a really interesting exercise for me and I plan to continue challenging myself to improve this game and my web skillz. And my zombie survival skillz.
- =randbetween - I've been using this formula in a lot of different places in order to create the randomness for this game so that it plays differently each time. In some cases I have combined this formula with some "=if" formulas in order to give the program a combination of programmed and random behaviors. When you play you should notice that the humans run away from the zombie using one example of this combination. I'm planning on using this formula next year when I teach to help model particle decay and other kinetics problems. What I like about using this formula in a school setting is that allows students to see a lot of random variation that will still show patterns if the sample size is sufficiently large.
- =importsheet - This formula lets me pull data from cells in another google sheet provided I have access to that sheet. What is nice about this command is that the "=randbetween" function above will reroll everytime something is added to the sheet. This means that if my random formulas are on the same document as the player input then everything will be constantly changing every turn. I created two documents for this game. One document creates the random seeds that populates the map, humans, and tells the humans where to go. The other document accepts all of the platter inputs for the game. One really cool application for this command that I have thought of for my classroom is that students can use it to link their documents to mine, and mine to theirs. This way I could give everyone a set of variables to work with at the same time and check to see if their programs are all functioning
- =filter - This formula lets me choose a single set of a data based on a filter I can create within the data sets. I was able to use this command in a lot of places in the background to help keep the game progressing in a linear fashion. Something Google Sheets doesn't do well at all is to continue using old data once new data is input. For example, each time the player moves I had it set up for the humans to move as well, and I wanted the humans to continue moving to new places based off of their previous positions. Using the filter command I was able to create a huge table of every position the humans would occupy and then have the humans advance down the table as the player moved around. It was a really cool way to see things come together. This has been a usful formula for me already when sorting through data that students submit through Google Forms. Once I have 60+ student responses it starts getting really hard to find things within the data. The filter command has let me create ways too look for students by name, period, similar responses to questions, etc.
Looking back at some of the questions that I hoped to answer I've been successful with some, and less so with others. I thnk that I have answered more than I've left unanswered and many of them I can answer now, even if I never implemented the answer to the question into the game (yet). Going through the questions in order from my declaration blog:
- How can I make the game interactive given the limitations of the program? There are several ways that I;ve been able to do this. The player avatar moves as different movement commands are given which is totally interactive. As the zombie chases down humans you are able to infect them and they move around the map as other zombies. The game is not as robustly interactive as a modern game but there are still many interactive elements that I feel I've been able to integrate.
- Can I integrate images into the game? I can integrate images and I have to a limited extent (really only 1 actually but adding more is pretty easy). The biggest issue is that Google Sheets isn't meant to handle many images on the screen and I didn't want to clutter things up unnecessarily. What I would really try to do if given the chance is to create my own simple graphics that would add some variety to the page.
- If I integrate images into the game can I make them change? Yes, I can. I was able to make the zombie image "walk" but I decided that it was a little more work than necessary to get the game itself functioning. Again, what I would like to do someday is create a set of simple graphics with some overlays that I could use on the map and around the edges to create a more visually stunning set up.
- Can I integrate sounds or music? Not that I've been able to find out. There are some ways to do it using Scripts but I was trying to work solely within Sheets for this project.
- How user-proof can I make this program? Does google sheets care about case? The program is mostly user-proof. I've locked players out of a few of the areas that they don't need to change for the game and once I do the rest it should be even more robust. It doesn't seem like sheets cares about case except in a few very limited, er, cases.
- Can I build a simple inventory or character building aspect to the game? I can and I did. I have some ideas for items and other interactive elements that can be acquired through exploration but I haven't yet implemented those.
- Will it be possible to create some form of simple story? Probably but this got sidelined in the mechanics of the game. Of course, you play as a brain starved zombie so I'm not sure what more drama you need.
- Can I create any kind of AI to have the system react to the player? I have some limited "AI" in the game. It is really just a few if/then statements but I feel like I did enough of a good job to make it seem like the AI is responded intelligently to you moves. I have a personal goal not to inadvertently create Skynet so I wasn't working too hard on the AI.
- How can I modify the difficulty level? There are a few ways that I could have built this in. I could have made it so that you needed to turn more humans, so that you had fewer stat points, so that you had less time to complete the game, etc. While I didn't put it in (again, yet) it is something that I think I could do if I wanted to.
- Is there a way to have a cell that the user inputs into be modified by the program? Not that I was able to figure out. The best I got was the boxes above the movement area where players could at least we where to input their next move command.
Again, this was a really interesting exercise for me and I plan to continue challenging myself to improve this game and my web skillz. And my zombie survival skillz.