Inspiration
Blade of Valor:: Simplified Timer Version:: retains the core inspiration from Grimes' Player of Games and the surreal, mythical tone of Legend (1985). This version focuses on delivering a fast-paced, stripped-down experience where players race against the clock to collect as many orbs as possible in a single level.
What it does
Blade of Valor is a streamlined 2D platformer where players tackle a single, intense level teeming with darklings and obstacles. The objective is simple: defeat enemies, collect as many orbs as possible, and race against the timer. This version focuses on quick, high-intensity gameplay sessions while retaining the core challenge. After one full playthrough, the game ends with a fade-out. Players can refresh the page to replay and aim for a higher score.
How I built it
- Phaser 3: Handles all game mechanics, visuals, and physics for smooth gameplay.
- Simplified Timer System: Tracks the remaining time, with the game automatically restarting when the timer runs out.
- Frontend Deployment:
- Amazon S3: Stores game assets for reliable and scalable access.
- Amazon CloudFront: Ensures fast and secure asset delivery with low latency.
- AWS Amplify: Powers deployment, hosting, and updates for the frontend.
- JSON for designing and configuring the levels, making updates fast and scalable.
Challenges I ran into
- Fine-tuning prompts for Amazon Q: While Amazon Q was helpful in some areas, I had to rework prompts a lot for it to understand niche parts of game mechanics.
- Creativity and level design: Learning how to use Tiled for building the map was a challenge, especially since AI tools struggled with designing unique, fluid platformer levels. The map I built has its flaws but offers more fluidity than anything I got from AI tools like PartyRock.
- Phaser 3’s code-heavy nature: Working with Phaser 3 required extensive custom coding to implement mechanics, visuals, and animations. Maintaining consistency in gameplay, especially with animations, felt like playing Jenga—adjusting one element often caused others to break. While Phaser 3 is lightweight and versatile, its lack of automation meant I had to build many features from scratch. Unfortunately, with the specific stack I used, finding resources or guidance was challenging, as not many share the "secrets" of making everything work seamlessly.
Accomplishments that I'm proud of
- This is my first completed game, and I’m proud to have brought such a unique idea to life.
- The backend initially featured two Stockfish AI playing against each other—and I had it working! However, I chose to omit it in this version to focus on consistency and quality.
- I built the entire Phaser game starting from a boilerplate, navigating the challenges of its code-heavy framework and overhead.
- Leveraged AWS CloudFront to deliver assets efficiently and lighten the repository with this favorite piece of code:
export const getAssetUrl = (path: string) => {
const CLOUDFRONT_URL = process.env.NEXT_PUBLIC_CLOUDFRONT_URL;
if (!CLOUDFRONT_URL) {
throw new Error("CLOUDFRONT_URL environment variable is not set");
}
return `https://${CLOUDFRONT_URL}/${path}`;
};
What I learned
- How to solve problems creatively, like optimizing prompts for Amazon Q to get better results.
- This was my first hackathon, and I learned that having big ideas is great, but time is the most important factor in deciding what you can and can’t do.
- Even with AI tools, having teammates is essential. Developers need other developers to share ideas, collaborate, and divide the work.
What's next for Blade of Valor
- Reintroducing backend functionality, such as leaderboards and advanced mechanics, in future iterations.
- Expanding levels and challenges to create a richer player experience.
- Reintroducing the dialogue I worked very hard on in Party Rock
- Exploring deeper integrations with AWS to further optimize hosting and gameplay features.
Built With
- amazon-cloudfront-cdn
- amazon-dynamodb
- amazon-ec2
- amazon-web-services
- docker
- docker-compose
- eventbus
- fastapi
- nextjs
- phaser.js
- stockfish
Log in or sign up for Devpost to join the conversation.