TuneToMap
Team Members
Team Advisers
Cryptic Studios
Tradigy Illustrations
Spencer Dale
Dr. Karen Ward
Chris Meyer
Andrew Gary
Andrew Meyer
Dr. Andrew Nuxoll
Nate Kozlowski
Fernando Freire
Can we format it with markdown too?
- test
- test 2Background
- Who's the consumer?
- What's the problem?
Background
Generated Output
<level>
<levelDifficulty value="10" />
<rooms value="2" />
<startRooms>1 </startRooms>
<endRooms>1 </endRooms>
<room value="1">
<roomDifficulty value="8" />
<aidDensity value="1" />
<obstacleDensity value="3" />
<roomLocation>0,0</roomLocation>
</room>
<room value="2">
<roomDifficulty value="8" />
<aidDensity value="1" />
<obstacleDensity value="3" />
<roomLocation>0,1</roomLocation>
</room>
</level>
Background
Legend of Zelda
Background
Binding of Isaac
Original Design - Windows 8.0
Original Design - Windows 8.0
File Picker UIOriginal Design - Windows 8.0
Final Design - Windows 8.1
Visualizer
- Purpose
- Provide a quick preview of output
- Verify output
One of the goals of our project past the initial scope was to flesh out
the user interface. One of the simplest and most effective ways that we
found was to implement a UI component that would allow our users to
preview the output of our app.
The visualizers primary task is to display the output of our application.
Once our application has finished generation our XML output (discussed later),
we will then read our file output and arrange squares on the page to signify
where each room is.
This has the benefit of verifying the output of our application, since if our
own app cannot display the image then something has surely gone wrong.Visualizer
Challenges
- Prototype vs. final Implementation
- Prototype:
- Implemented as web application
- Surfaced issues unrelated to Win8
- Final:
- Delayed because of different environment
One of the challenges we faced throughout the life of our capstone
project was that of prototyping vs. actual implementation.
When we reached the stage where we could implement the visualizer
we first wanted to prototype the feature out and see if we could
surface any issues before implementing the feature for real.
Due to our familiarity with the environment and the flexibility of
the language, we implemented the intial prototype in JavaScript.
The differences between the browser and the win8 app environment was
sufficient to surface a completely new set of challenges in implementing
the visualizer. Unfortunately many of these challenges did not result in
an easier time developing these featuresAudio Processing
Problem: How to extract audible qualities from an audio file?
-
Solution: Analyze frequency bands
Audio Processing
- Audio file criteria:
- PCM Wave (.wav) file
- Between 30 seconds and 15 minutes long
Audio Processing
- Split audio file into even sections
- Music is dynamic, audio levels will vary throughout a single piece of music
- Split a single song into sections: intro, chorus, breakdown, bridge, climax, and outro
- Current solution: breaks audio into even sections based on how long the track isAudio Processing
- Average out the frequencies within predefined bands
Audio Processing
- Average out the frequencies within predefined bands
- Average out the bands for each section
Audio Processing
- Using a library for digital sound processing
- Didn't work with Win8 Store App API
- Rewrote data structures from scratch
- Able to keep some NAudio math functions
Level Generation
- Room Creation
- Layout Creation
Room Creation
- Room Properties
- Room Difficulty
- Aid Density
- Obstacle Density
Property Creation
-
Room Difficulty: Dynamic Level
-
Aid Density: High Frequency/Pitch
-
Obstacle Density: Low Frequency/Pitch
Layout Creation
- Rules
- Start & End Room Selection
- Room Accessibility
- Start & End Room AdjacencyLayout Creation
- Rooms are placed in their creation order
- Available Locations
- Location SelectionConclusion
- Windows underwent significant changes
- Quickly ramped up on completely new platform
- Met functional specifications (and then some)
File Output
- Purpose
- Integrating into a system designer's workflow
- Why XML?
- Standard, well defined file format
- Human readable
- Machine readable
As mentioned before the goal of our tool is to enable system designers do design levels
and dungeons more efficiently. What we wanted to give our users was an easy way to integrate
into their existing tools, and we decided that the best way to do that was to choose a file
format that was easy to work with and easy for our software to interact with.
We discussed several different file and image formats, but all of them had some limitation
that we found unnaceptable for our purposes.
In the case of YAML, we found that the existing software libraries available were not mature
enough yet for use in our application, or would require a significant amount of work to
integrate.
Image formats such as PNG and JPEG, while pretty and visually helpful, would fail to integrate
in any meaningful way with our target audience's tools.
What we ended up deciding on was the XML format. This file format is an industry standard,
and is extremely well supported in the Windows 8 environment. Not only that, but this format
is human readable as well as machine readable, which means that system designers are free
to hand edit these files or allow our software to handle these files for them.
On the next slide, we'll see an example of what our software might produce.Level Generation Equations
Frequency Analysis
- How do we get exact frequency data from an audio file?