Inspired by the autonomous machinery on the John Deere combines and tractors, our team sought to tackle a game to educate people about the farming process.
Forest Farm is a farming simulator game that seeks to educate people of all ages about the process of farming, from the initial planting of the seed to the harvesting including the market process. In order to start, users begin with $100 dollars and two vehicles that they will use throughout the game, the harvester and planter. The harvester's main task is to harvest the grown crops on the farm, while the planter replants and fertilizes the crop. To harvest and replant the corn crops, users must create a path for both the harvester and planter to follow. As the users create the path, they must avoid obstacles (boulders) that are scattered throughout the farm. Failure to do so will cause farmers to lose half of the corn they have stored. Farmers can sell their current inventory based on market conditions where the price of corn and seeds fluctuates through real-world market data.
Our team utilized Python, specifically the Pygame library to program the game. To obtain the sprites for the game, we used Midjourney to generate the 2.5D tiles, crops, background objects (water and trees), and rocks. Paint.NET was used to touch up any of the generated images, edit, and convert the images to pixel art. The 3D software, Blender, was used for modeling, texturing, and rendering of the 3D harvesters and planters. FL Studio was used to create the immersive soundtrack for the game. All of this work was tied together on GitHub for proper version management and collaboration.
One of the biggest challenges we faced was accurately simulating the movement of the harvesters and planters. Due to how the game is 2D, the harvester and planter had to be rendered in 45-degree increments so we make a convincing-looking driving animation for them. Another challenge we faced was being able to draw hundreds of sprites on the screen smoothly where proper implementation and optimization were necessary.
We are proud of successfully integrating path creation and following algorithms for the tractors to incorporate automation into the game and creating a realistic and engaging farming simulation experience.
One of the biggest things our team learned throughout BoilerMake is the use of Python and Pygame. Although our team had programming experience in the past, only one member of the team had previous experience with Python and Pygame. Because of this, it allowed the team to obtain hands-on experience with Python and Pygame, and to learn the capabilities of the language and library. In addition, lots of sprites were needed in order to create the game, and from this, many members of the team were able to learn how MidJourney AI art generation works, and the editing/creation of pixel art. Lastly, to tie the game together, sound effects and music were added to the game to elevate the experience of farming. We used FL Studio on top of Pygame's music functionality in order to create and incorporate the soundtrack and effects used within the game, allowing members of the team to get first-hand experience in music creation and theory.
When beginning this project, our team was ambitious with our plans, attempting to obtain API data of random locations (beginning with the Midwest region, but expanding to different regions) and their subsequent weather data. This would be a great addition to the project and possibly relate the data obtained with the historical price of corn that our team is currently using. In addition, one of the biggest things our team would like to add would be the addition of a wide variety of crops. The inclusion of different crops and their pricing history would allow us to further educate users of not only the unique process that each crop experiences during the farming cycle, but also allow us to introduce users to different regions of the world and their unique cultures and practices. Lastly, we plan to add more crops and possible weeding mechanics and expand the upgrade system. We also plan to add a dynamic weather system.