Today we officially delivered the project at the Engineering Expo. There we presented our project to some judges and fellow students. Well, usually the explanation was for the judges, and the students would come just to play the game and try to get through the last level and put their playertag in the leaderboard.
I have to say that my score will be (Or already has been) overcomed by anyone who has a just a fraction of eyes to fingers reaction. What I’m trying to say is that even after one semester of development, I’m so bad at the game… After more than 1 hour playing level 4, I surrendered, and assumed that I could go trought all the levels in 2 hours, more or less, and then I pushed my score to the DB, manually. I think I deserved to be in the leaderboard of the game, even if I couldn’t put it there usiang legal abilities.
But now, onto my kinda semester retrospective.
I feel that overall this smesterI learned a lot about WEB development using NodeJS. In my WEB Development class project I learned about front-end frameworks, back-end development and deployment, different ways to make requests to de server, implementation of MariaDB queries on the server’s routes and the delivery of JWT and local storage.
What I learned in that class was useful for me, so that I shouldn’t need to worry about how to do all of the back-end development on this project, and instead focus on enjoying more the project, setting up Mongoose and MongoDB and designing server tests. I found out that I could really have fun doing those three new things because I didn’t worry at all for the rest of the stuff.
I don’t know what to say about my new habit of making very late publication of our weekly reports (And any report in general).
This week the rest of the team primary focus was to film and deliver the final project video, and myself, I worked in the design of the project poster. The one that we needed to present at “The Engineering Expo”. I’m very proud of that poster, I think it ended up real nice
I’m proud of our project. I think we worked very well and accomplished the delivery of a nicely done (And well tested) product. I’m still amazed at how bad I’m at playing it. But the doubts about myself got at ease when I saw at the expo how most of the people who played were having difficulties playing, because it is indeed, a difficult project. I guess my teammates just practiced a whole lot more when designing the levels and testing them.
See you the next time!
I leave you my poster down below.
Please, only share.
Okay, so doing the stuff that Gera asked me to do took me like 10 minutes. Which isn’t much, but it was more than what I estimated. I forgot how much time it takes to move stuff in the game window. Instead of giving to coordinates and creating a square using only the diagonal, it asks for the center coordinate, a high and a width, making my space senses go uisndqne… Oh, and to take a bit of initiative, not only I increased the size of the texts, but I also updated the content and added new texts to the level.
I’ve also created and updated some DB scripts. Now we have a remove level script, and there are some comments in most of the scripts to make a more specific query to the DB.
So this week I worked in the addition of a new enemy. This enemy is immortal, or at least to our knowledge, it is immune to bullets. This enemy is yellow (As if it was a shield), and those are the only visual differences in of the enemy. Obviously if it can’t be destroyed, it won’t give any points and thus it won’t display any text on hit.
And I would love to show here a little GIF of the enemy, but there are some sound issues that don’t let the game load (Not even an specific level). And I’m not blaming anyone, the issue only appears until devices pulled the repository, not before making the push.
My teammates worked this week in the sound system (Using p5.play, please check our README to see every framework we are using). They also worked regarding the implementation of new walls and objects (I helped a little bit on regarding the Mongoose level schema).
Okay, so supposedly this week we would try to come up with some new ideas for our project. Because,you know…. We kinda did all of them already.
My team came up with several ideas and changes. But what I think it’s the most important is that we are going to -finally- introduce proper sprites and sounds to the game. The idea of different surfaces (Like some slippery and bouncy ones) that would affect (And force us to develop) a more complex set of phisycs.
Well, at least I suggested a new issue for the project (new issue) that I will be implementing. That is a new enemy that can’t be killed when shooting at it. This will enable us to develop more levels where we don’t need to care about the gameplay getting to easy if the gun is spammed.
So in my previous blog, I wrote that I didn’t have a lot of stuff to do. But I talked to my partners and discussed some self-assignments for this week (And next).
So, basically, I made 4 new issues, of which I completed 2 and left 2 for next week. We were given notice that we are going fast regarding the project development. So, these new issues don’t implement new stuff (Well, kinda of…), but most of them implement new and more efficient ways of doing what we already did.
The first new issue was to implement Mongoose as interface to connect to mLab. This would provide a more stable connection to the DB and schemes and models for document creation and finding. These new models have steps for verifying the content of the documents too. The only problem with this was that the campus’ network has proxies that wouldn’t let the connection to begin with mLab and Mongoose. This problem cause my second issue.
Move our database from mLab to MongoDB Atlas. This wouldn’t have been as complicated if Atlas provided a free interface to the database’s collections and documents. So instead, some scripts were necessary to create to feed the database and check the data that is already uploaded.
Everything was successful at the end. There were 1 or 2 hard complications (Like identifying the problem with mLab and the network). Now two more issues are pending. You can read about them in the next blog.
This week passed way too fast, and I feel there wasn’t a very stable calendar for working hours. Still, I enojoyed the developement, as always…
This week I worked with the database, succesfully. I helped with the development of a json’s format for level loading (It includes the coordinates for every object and text, as well as some strigified lambda functions to parse when the level is loaded. This last feature I didn’t know it could be applied.
Also with this topic, a back-end function to make a request to the mLab server was made, and a function to properly load the level when the client makes a request.
I also worked with my partners to clean the code and fix some damn bugs we hadn’t ecountered. Well, the truth is that most of them weren’t bugs, just tome minor functionalities that weren’t implemented and caused some undesired characteristics.
I finally cracked chai (Using mocha) and supertest. It just clicked somehow. Last week was a lot of confusion and then it just… worked. I can’t even remember the process I made to make it work. Hehe.
Part of the problem is that I haven’t worked with http requests before. I didn’t know what an http mock request was, or if I needed one (After trying a lot I realized that I don’t). At the end I achieve victory. I made my description of the tests. I used supertest’s request to assert the main get request to the server and to check the JSON response of a post (Used to properly load the level).
So I’m happy about that.
After passing the JSON test, I helped Arturo making the level actually load from the JSON. It was difficult, again, because my poor HTML skills, and some poor documentation about which function is the adequate to make the request, what should the headers contain and how to encode the JSON through the response.
I had fun.
The team, in general, worked hard to improve the gameplay and add functionalities. I think that a lot of bugs arose during this week’s development. A lot of them just from merging branches. That did also consume work time.
I’m proud of our GitHub more professional usage. Finally, a full team that comprehends branches and the use of issues… YAY!