What Worked Well
As Angela, one of the most well-known iOS development lecturers on Udemy wrote on her Twitter [1] [2]: “Dear new developers, don’t ever let anyone make you feel bad about Googling something you don’t know. A lot of “pro” dev teams that I’ve worked with will go to the pub if StackOverflow is down.”
Even though professional and experienced developers use Stack Overflow or other forums to look for solutions towards the issues they have. Similarly, the problems I face for the projects can be solved by looking for solutions on Google. This is one of the primary technique I use for the projects I am working on.
Design Phase
There were only two weeks to finish the design phase. Therefore, I had to find as many samples games are possible and wireframe the game using Balsamiq Mockups 3 software. Here is the link to project planning that contains design steps.
Process
Backup files
Once the project gets bigger and more complicated, I do a backup before making new changes to the project. Backing up is also important for software testing, I always run the code to test the codes after completing each small task to make sure things goes well. If something fails during the development, I can still go back to the previous backup and work from that or I can also check the previous ones with the version I am working on to find out where the problem came from. The backup can be done through GitHub. However, I prefer to make a copy and store each of them on the local machine that saves me a ton of time by just copying and pasting into the same folder.
Skills
I have learned new skills in order to develop this game through various resources and those are listed as follows.
· Udemy: I learned from the basics of Unity using C# programming language. Since I had some C# background at Deakin University, I learned to use the software, its interface, how to compile and so on.
https://www.udemy.com/unitycourse
https://www.udemy.com/unitycourse2
· Unity Manual: I learned the necessary skills for building the game on Unity official website as indicated in [3] such as Coroutine and how to load external data format via JSON [4].
· YouTube: I also learned to build the game into apk file and upload it to Google Play store.
Strategies
As mentioned at the beginning of the report, I solved the problems I had from:
· Unity official website.
· Forums such as Stack Overflow and Unity forum.
· YouTube is one of the resources I can find answers towards the problems.
· Various websites from Google search results.
Approaches and Scheduling
· Plan out the whole project, separate into smaller tasks and work on each of them day by day.
· Work on the project at night since I am a night owl that can get more things done as pointed in [5]. Also, I have a part-time job during the day.
Software
Balsamiq Mockups 3: This software is used to creating wireframe for the game. This software is easy to use and get the interface I want in a short period of time.
Microsoft Word: This software is used for documenting, project planning and project report as it is convenient to update, delete, apply styling, heading, adding margins and a lot more.
Dropbox: It is a cloud storage that allows me to store files, including documents, images, URLs, videos or project files.
Photoshop: I used this photo editing software to create a logo for the game.
Unity: it is the main software for me to build the game. Unity is the ultimate game development platform and it is a cross-platform game engine.
Microsoft Visual Studio: it is an integrated development environment (IDE) that is used to edit, update the game’s source codes in C# programming language.
GitHub Desktop: this software is used to pull, commit or push the codes to/from GitHub for version control with simple user interface. I can see all previous changes inside this software and I used this software instead of SourceTree. The reason is listed in “What Did Not Work Well” section below.
Camtasia: this software is used for video editing and producing professional video.
Online Tools
Trello Board: it is a web-based project management application that keeps track of everything either working as a team or individual.
I used different colours of labels to differentiate the difficulty of the tasks.
Green label: The tasks that require less time to complete.
Orange label: This involves more time to complete.
Blue label: For game demonstration.
· Checklist for each section of the project
· Tick each sub-task when finished.
By doing so, I save a lot of time and it is very useful for me to keep track of I am working on and avoid confusion along the way. I know which tasks should be completed before others. Also, it gives me a big picture of how the game is progressing.
GitHub: it is a web-based hosting service for version control using git. I used it to store all my source code and I can push or upload all my working source code to store it. If my local machine fails to start, all source codes can still be downloaded from GitHub and work on other computers.
Resource Generator: I used this online tool to create icons and splash screens in different sizes by uploading the game icon and splash screen and this tool will do the rest.
Online Converter: this online tool is used to convert video into gif format. The gif file can be automatically displayed, and it is uploaded to GitHub under README.md.
Emulator or Real Devices
The game is tested and run on the emulator as there would take time to run on real devices. I had a laptop that runs on Windows. It is very slow to run XCode on VMware Workstation. VMware Workstation allows running multiple operating systems as Virtual Machines including macOS. This is the reason I run on an emulator for this game.
What Did Not Work Well
For this section, I only include things that I want to try differently for next projects to improve efficiency.
Planning
The planning went quite well as I got enough time to complete the project. However, it would be better if I could start the project as early as possible. As I left the project for a few weeks before I started, I would have got more time to check the project to avoid minor errors.
Software
SourceTree: this software was used at the beginning of the project. However, it shows error and the software stops working after having it open for several minutes. As mentioned in the above section, I had used GitHub Desktop software instead of SourceTree.
Progress Tracking
Git is very useful in terms of controlling source codes. I am able to see all previous changes. However, I still need more time to learn how to effectively use Git as there are more functionalities to discover and apply to the project for working as a team in my next industry project.
Approaches and Scheduling
If I could work on the project again, I would start the project as early as possible. I would analyse and estimate how long it takes to learn new software to build apps or games such as Unity by having an overview of the software either on YouTube or official website. This is a new software for me and takes time to build how to use it effectively.
Readiness
By improving myself for things I described in “What Did Not Work Well” section. I am ready and confident to work with a larger team in real-world projects. This can be either in a tech company or as a private entrepreneurial group.
Summary
I enjoy the overall experience working on this project. I have learned to use different tools, new software and solve the problem independently. Though there are a few things I would change for upcoming industrial projects as I will need to start the new projects as early as possible so that I will have enough time to fully check the project.
References
[1] A. Yu, “Twitter”, Twitter.com, 2018. [Online]. Available: https://twitter.com/yu_angela/status/963714244926636033. [Accessed: 19- May- 2018].
[2] “iOS 11 & Swift 4 — The Complete iOS App Development Bootcamp”, Udemy, 2018. [Online]. Available: https://www.udemy.com/ios-11-app-development-bootcamp/. [Accessed: 19- May- 2018].
[3] “Unity — Manual: Unity User Manual (2018.1)”, Docs.unity3d.com, 2018. [Online]. Available: https://docs.unity3d.com/Manual/. [Accessed: 20- May- 2018].
[4] “Loading Game Data via JSON — Unity”, Unity, 2018. [Online]. Available: https://unity3d.com/learn/tutorials/topics/scripting/loading-game-data-json. [Accessed: 21- May- 2018].