Project proposal file for COMS 4995 Open Source Development w/ Tim Paine
Trey Gilliland
jlg2266
Update 09/28/2020:
I have decided to focus on the 3rd project proposal at the moment. PyScenes is PyGame 2 library to provide users with a simple base project and high-level functionality used in games and multi-media programs.
Project Motivation
Pygame is a great beginner resource for python game programming as it has great documentation, written in Python (which is often taught as a first programming language), and binds to the trusted SDL library. However, when I was learning to make games for the first time, I struggled with making my code modular and separated enough to remove dependencies amongst files and such which led to many code blocks very early on.A library and set of videos I came across called pygame_functions helped ease a lot of the pain of the learning curve, but it becomes messy very quickly as all the code is provided in a single .py file and the implementation is quite limiting. I would like to provide a similar library with expanded functionality provided at the highest level possible for beginners while still being able to make games easily.
Some example tasks/directions to focus on:
- Provide a template skeleton to provide the users with scenes for easy context switching
- Modularize code involving 2D drawing to match the standard for other 2D drawing libraries such as Processing.js
- Modularize code involving system code for easy file system saving
- Setup code to allow data to be pulled from an API using the requests module and easily be used in a pygame
- Setup code to allow for simple TCP networking games such as Chess, Uno, etc.
- Modularize code involving audio to allow easy use and resources for adding sound to programs
- Modularize code involving sprites and keyboard/mouse input for ease of use for game
Original Proposals
Here are 3 potential projects that I want to work on throughout the semester and bounce between depending on what I am interested in and which is the best for completing the deliverable for the class. All 3 projects are exciting to me so I am fine with any of them.
- Contributing to larger project: Dash.js
This is a repo I worked with for a research project and the reviewers suggested we submit a pull request to the project. I would like to clean up and package our project code and submit a pull request to the project at some point in the semester.
- Partner project with Raghav Mercheri: torch.js
This is a NodeJS binding for PyTorch. Would be a really useful repo and would serve well as a partner project due to its large scope.
- PyGame wrapper
When I first started learning how to code, I was really interested in making games (because who isn't when they're first starting out). Some of the first programming projects I built were made using PyGame because I was taught Python in school and PyGame was rather simple. PyGame is an open source python project for writing games and was a great introduction to making games, but has somewhat of a steep learning curve due to all the factors that go into a game.
To improve upon the experience, I would like to develop a simple OOP-based game template so users don't have to worry about the best practices when making a game. I want to make it as simple as possible to start making a 2D game that can handle sprites, background, tile-based movement, and other common 2D game components. This is something I started working on nearly a year ago but hasn't really been touched since so I would love to revive it and flesh it out as an open source library.