final-presentation



final-presentation

0 0


final-presentation

Final presentation for the TuneToMap project.

On Github UP-TeamStark / final-presentation

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 2

Background

Background

  • 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

User Interface

Original Design - Windows 8.0

Original Design - Windows 8.0

File Picker UI

Original Design - Windows 8.0

Final Design - Windows 8.1

Visualizer

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 features

Demonstration

Audio Processing

Audio 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 is

Audio 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
    • NAudio
  • Didn't work with Win8 Store App API
  • Rewrote data structures from scratch
  • Able to keep some NAudio math functions

Level Generation

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
    • Lyrical Lines
  • Obstacle Density: Low Frequency/Pitch
    • Bass Lines

Layout Creation

- Rules - Start & End Room Selection - Room Accessibility - Start & End Room Adjacency

Layout Creation

- Rooms are placed in their creation order - Available Locations - Location Selection

Conclusion

  • Windows underwent significant changes
  • Quickly ramped up on completely new platform
  • Met functional specifications (and then some)

Q & A

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?