程序代写 CSC 388/588 (Type in fields) 2

Real-time Multithreaded Architecture use Adobe Reader to complete Submission Report CSC 388/588 (Type in fields) 2
Student Information
Integrity Policy: All university integrity and class syllabus policies have been followed. I have neither given, nor received, nor have I tolerated others’ use of unauthorized aid.
I understand and followed these policies:

Copyright By PowCoder代写 加微信 powcoder

Name: Date:
Submission Details
Final Changelist number:
Verified build: Yes No
Required Configurations: YouTube Link:
Self Grading Section:
Required Features: Basics
XAudio2 Voices
Attributes (volume, pan, pitch, etc.)
Loading Waves (initiated from game side)
Instancing playing the multiple instances of the same SndCall
Seamless transitions between voices using Voice Callbacks in Playlist Using Voice Buffers or Stitch Voices together
Priorities
Creating a priority table (6 entries)
Preemptively cancelling or calling SndCalls based on their priorities
Using “time playing” for cases where there are multiple calls with same priority Game User Callbacks
On Game Side – user supplied callback for StreamEnd() Callback for the game to trigger an event on playing end
Real-time Multithreaded Architecture Milestone

Real-time Multithreaded Architecture use Adobe Reader to complete Submission Report
CSC 388/588
(Type in fields) File
File load callback when the file is loaded and ready on the Audio Thread
Audio Management Handles
Buffer (wave data)
Voice (management)
Other systems for management
Memory Leaking Verification No Resources Leaking
YouTube Process
• Record the YouTube demo
o Youneedtorecordinstereowithcommentary
 2 channel with both computer (desktop) and microphone recording o Suggestion:OBSscreencapture
• Record the desktop (enough to show your directory and the visual studio and output) o Showyourdirectoryinrecording
 Launch the visual studio (double click solution) o Showoffrelevantpartsofthecodewithcommentary o LaunchanddemotheMS2
 Play the demo and add your commentary in real-time o Watchyourvideo
 Verify that video clear and can you hear the commentary audio in stereo?
• Note: Weekly Sprints cannot be longer that 15:00 mins
o Ifyougoover…doitagain
o NEEDTOseecompilingandlightdiscussionofcodewithdemo
• Publish your YouTube recording
o Makesureitisaccessiblewithoutanyloginorpermissiontoplay
o Itcanbeprivatebutnotrestrictivetoplaybyanyonewiththelink
• Submit your code to perforce to the appropriate MS2 directory
o Verifyit
Real-time Multithreaded Architecture Milestone

Real-time Multithreaded Architecture use Adobe Reader to complete CSC 388/588 (Type in fields)
Pdf form (this document)
• Submit this PDF to perforce o Fillinform
 Name, changlelist, etc…
 YouTube Link
o Submitbacktoperforce
Submission Report Keenan
Verify Builds
 Check it out and Submit it back to perforce to the same location
• Follow the Piazza procedure on submission
o Verifyyoursubmissioncompilesandworksatthechangelistnumber.
• Verify that only MINIMUM files are submitted o No–Generatedfiles
 *.pdb, *.suo, *.sdf, *.user, *.obj, *.exe, *.log, *.pdb, *.db, *.user
 Anything that is generated by the compiler should not be included o No–Generateddirectories
 /Debug, /Release, /Log, /ipch, /.vs
• Typical files project files that are required
o *.sln,*.cpp,*.h
o *.vcxproj,*.vcxproj.filters,CleanMe.bat
Standard Rules
Submit multiple times to Perforce
• Submit your work as you go to perforce several times (at least 5) o Assoonasyougetsomethingworking,submittoperforce o Havereasonablecheck-incomments
 Points will be deducted if minimum is not reached
Write all programs in cross-platform C++
• Optimize for execution speed and robustness
• Working code doesn’t mean full credit
Submission Report
• Fill out the submission Report o Noreport,nograde
Code and project needs to compile and run
• Make sure that your program compiles and runs
Real-time Multithreaded Architecture Milestone

Real-time Multithreaded Architecture use Adobe Reader to complete
Submission Report SC 388/588
(Type in fields)
o Warninglevel4…
o NOWarningsorERRORS
 Your code should be squeaky clean. o Codeneedstowork“as-is”.
 No modifications to files or deleting files necessary to compile or run. o Allyourcodemustcompilefromperforcewithnomodifications.
 Otherwise it’s a 0, no exceptions
Project needs to run to completion
• If it crashes for any reason…
o Itwillnotbegradedandyougeta0
No Containers
• NO STL allowed {Vector, Lists, Sets, etc…}
o Noautomaticcontainersorarrays
o Youneedtodothistheoldfashionway-YOUEARNEDIT
Leave Project Settings
• Do NOT change the project or warning level
o Anychangingoflevelorsuppressionofwarningsisanintegrityissue
Simple C++
• No modern C++
o NoLambdas,Autos,templates,etc… o NoBoost
• NO Streams
o Usedfopen,fread,fwrite…
• No code in MACROS
o Codeneedstobeincppfilestoseeanddebugiteasy
• Exception:
o implicit problem needs templates
Leaking Memory
• If the program leaks memory
o Thereisadeductionof20%ofgrade
• If a class creates an object using new/malloc o Itisresponsibleforitsdeletion
• Any MEMORY dynamically allocated that isn’t freed up is LEAKING o LeakingisHORRIBLE,soyoulosepoints
No Debug code or files disabled
• Make sure the program is returned to the original state
o Ifyouaddeddebugcode,pleasereturntooriginalstate
Real-time Multithreaded Architecture Milestone

Real-time Multithreaded Architecture use Adobe Reader to complete Submission Report
CSC 388/588 (Type in fields)
• If you disabled file, you need to re-enable the files
o Allfilesmustbeactivetogetcredit.
o Bettertolosepointsforunitteststhantodisableandloseallpoints
Allowed to Add files to this project
• This project will work “as-is” do not add files… Due Dates
• See Piazza for due date
• Submit program perforce in your student directory assignment supplied.
• Fill out your this MS2 pdf and add YouTube link
o ONLYuseAdobeReadertofilloutform,allotherswillberejected.
o Fillouttheformanddiscussionforfullcredit.
• Need to see discussion of code, compiling and demo in VIDEO
o Demo and explain each prototype feature:
 YouTubeVideoDemo(publiclinkmustwork,nosigninrequired)
o Demo of the milestone
 IfIdon’thearandseetheexplanation,Iassumeyoudidn’tdothefeature
Summary of Milestone
• Basics sound calls
o Vol,Panning,Pitch,Start,Stop,sounddurations,etc
• Stitching calls together by Voice Callbacks
• Priority System
• User Callbacks
• Async File loading
 Do all your working in MS2 directory
 Copy PA5 or PA6 to start the MS2 directory
 You need to use FileSlow methods for milestone2
i. No other file system allowed
 Make sure you submit this project many times to perforce as you develop i. You need to submit the project and the video for this milestone
 Demo cannot LEAK resources or memory
 Make sure you shut down all resources and threads correctly  Add a special Key to kill the program before exit
Real-time Multithreaded Architecture Milestone

Real-time Multithreaded Architecture use Adobe Reader to complete
Submission Report SC 388/588
 For Demo timing…
 Use std::this_thread::sleep_for() to control the time…  If you need to sequence actions in the demo
 Do not have any Threads doing sleeps
 Only sleeps used in the demo timing
 Sound not specified
 Default Attributes:
i. Vol: 70%
ii. Pan: Center
iii. Pitch: Original iv. Priority: 200
 Playlists Loading
 Loaded before Blocking before Demo starts  Load this with your Blocking Wave loads
 Deliverables
• Stand-alone C++ demo
o CreateademotoshowofftheALLoftheabovefeatures
(Type in fields)
Key Q – QUIT is a good choice
Then escape key to close the window
 Need to see that there is no Memory Leaks on exit
o Useaudiosamplesthatallowyoutodemonstratetheabovefeatureseasily • Visual Studio 2019 Enterprise Edition
o C++warninglevel4
o Minimumcode,notemporariesorgenerateditems
o Needstobeabletocompileandrun“as-is”withoutcheckingoutfromperforceor
changing the attributes of the files
• For some people – the demo is hardest part of this exercise
Real-time Multithreaded Architecture Milestone

Real-time Multithreaded Architecture use Adobe Reader to complete CSC 388/588 (Type in fields)
Demo 1: BASICS
Demo 1: Basics
 You need to use FileSlow methods for milestone2
 All Sound wave assets need to be loaded/initiated from Game Side Setup:
• Given 5 simple mono wave samples o Sampledat48Khz,32-bit
• Create 5 separate simple playlists (scripts) – one sound wave, one sound ID o 101-Fiddle
o 102-Bassoon o 103–Oboe2 o 104-SongA o 105-SongB
Start Demo 1 –hit the “1” key to trigger it
• This is triggered in the update() method of the game o Readthekeyboardinput
o ThenloadandgowithyourDemo1
• The demo should play from there.
o Nouserinterventionneeded–justneedthetimertriggersworking Time (seconds)
Submission Report Load Load Load Load 101 102 103 104 105
0 3 6 10 15 20 25
101 101 101 102 102 103 103
Real-time Multithreaded Architecture Milestone
Snd_C Play 103 Pan center
Start vol : 100%
(every 1ms) read vol, add delta over 2 secs Final vol: 0%
Priorty: 200 Initiated on Game thread
Snd_C Play 103 Pan center
Start vol : 0%
(every 1ms) read vol, add delta over 2 secs Final vol: 100%
Priorty: 200 Initiated on Game thread
Snd_B Play 102 70% Vol
Start pan :100% right
smoothly (every 1ms) pan left over 2 secs Final pan: 100% left
Priorty: 200 Initiated on Game thread
Snd_B Play 102 70% Vol
Start pan :100% left
smoothly (every 1ms) pan right over 2 secs Final pan: 100% right
Priorty: 200 Initiated on Game thread
Snd_A Play 101 Pan 100% Right, 70% Vol Priorty: 200 Initiated on Game thread
Snd_A Play 101 Pan 100% left, 70% Vol Priorty: 200 Initiated on Game thread
Snd_A Play 101 Pan Center, 70% Vol Priorty: 200 Initiated on Game thread
Blocking Load 105 Initiated On Game thread
Blocking Load 104 Initiated On Game thread
Blocking Load 103 Initiated On Game thread
Blocking Load 102 Initiated On Game thread
Blocking Load 101 Initiated On Game thread

Real-time Multithreaded Architecture use Adobe Reader to complete
Submission Report SC 388/588
Part A: Load sounds
(Type in fields)
o AddDebug::out()toshowthecallonthecorrectthread When loaded start time demo
• In Demo (Start with a key press) o BlockingLoadingSnd101 o BlockingLoadingSnd102 o BlockingLoadingSnd103 o BlockingLoadingSnd104 o BlockingLoadingSnd105
• Debug printing for each load
o InitiateonGameThread
Part B: preset pan test
• Timer: 0 seconds
o Play101withpanincenter,vol70%
• Timer: 3 seconds
o Play101withpan100%left,vol70%
• Timer: 6 seconds
o Play101withpan100%right,vol70%
Part C: runtime panning adjustment with write only
• Timer: 10 seconds, vol 70%
o Play102withpan100%leftandmoveitto100%right
 By setting the attribute directly
• Every 1ms change the panning…
o Smoothlyfor2seconds • Timer: 15 seconds, vol 70%
o Play102withpan100%rightandmoveitto100%left  By setting the attribute directly
• Every 1ms change the panning o Smoothlyfor2seconds
Part D: runtime volume adjustment with a read modify write
• Timer: 20 seconds
o Play103withvolumeat0%andrampupthevolumesmoothlyto100% o Smoothlyacross2seconds
 Do this by 1st – reading the current volume
 Then add a delta to the volume and set the attribute directly
• Every 1ms change the volume
• Timer: 25 seconds
o Play103withvolumeat100%andrampdownthevolumesmoothlyto0% o Smoothlyacross2seconds
Real-time Multithreaded Architecture Milestone

Real-time Multithreaded Architecture use Adobe Reader to complete
Submission Report SC 388/588
(Type in fields)
 Do this by 1st – reading the current volume
 Then add a delta to the volume and set the attribute directly
• Every 1ms change the volume Part E: Stereo effect from mono
Time (seconds)
30 35 38 60 72
• Timer: 30 seconds
o Play104withpan100%left,vol70% o Play105withpan100%right,vol70%
• Timer: 35 seconds
o PrintintheDebugger’sOutputscreenthetime104hasbeenplayinginseconds
 (since it started playing)
 Need to use the system…no hard coding numbers
• Timer: 38 seconds
o PrintintheDebugger’sOutputthetime104hasbeenplayinginseconds  (since it started playing)
 Need to use the system…no hard coding numbers
• Timer: 60 seconds
o PrintintheDebugger’sOutputscreenthetime104hasbeenplayinginseconds  (since it started playing)
 Need to use the system…no hard coding numbers o Stop104
• Timer: 72 seconds
o PrintintheDebugger’sOutputscreenthetime105hasbeenplayinginseconds
 (since it started playing)
 Need to use the system…no hard coding numbers o Stop105
Priorty: 100 Initiated on Game thread
Debug::out() use the sysem Display how long 105 has been playing Initiated on Game thread
Priorty: 100 Initiated on Game thread
Debug::out() use the sysem Display how long 104 has been playing Initiated on Game thread
Debug::out() use the sysem Display how long 104 has been playing Initiated on Game thread
Debug::out() use the sysem Display how long 104 has been playing Initiated on Game thread
Snd_E Play 105 Pan 100% Right, 70% Vol Priorty: 200 Initiated on Game thread
Snd_D Play 104 Pan 100% Left, 70% Vol Priorty: 200 Initiated on Game thread
Real-time Multithreaded Architecture Milestone

Real-time Multithreaded Architecture CSC 388/588
Part F: Instancing several sounds
use Adobe Reader to complete
(Type in fields)
Time (seconds)
Submission Report _I 102
• Timer: 80 seconds
o Snd_F=Start102
o setvolto40%
• Timer: 80.5 seconds
o Snd_G=Start102
o setvolto40%
• Timer: 81 seconds
o Snd_H=Start102
o setvolto40%
• Timer: 81.5 seconds
o Snd_I=Start102
o setvolto40%
• Timer: 81.5 seconds
o StopSnd_F o StopSnd_G o StopSnd_H
• Timer: 82 seconds and beyond
o LetSnd_I–playanddiewithoutintervention
Priorty: 200
Stop Snd_H
Initiated on Game thread
Priorty: 200
Stop Snd_G
Initiated on Game thread
Stop Snd_F
Initiated on Game thread
Priorty: 200
Snd_I Play 102 Pan center, 40% Vol
Priorty: 200 Initiated on Game thread Snd_H Play 102 Pan center, 40% Vol
Priorty: 200 Initiated on Game thread Snd_G Play 102 Pan center, 40% Vol
Priorty: 200 Initiated on Game thread
Snd_F Play 102 Pan center, 40% Vol Priorty: 200 Initiated on Game thread
Real-time Multithreaded Architecture Milestone

Real-time Multithreaded Architecture use Adobe Reader to complete CSC 388/588 (Type in fields)
Demo 2: Voice Stitching
Demo 2: Voice Stitching – using XAudio2 Callbacks
 You need to use FileSlow methods for milestone2
 All Sound wave assets need to be loaded/initiated from Game Side Setup:
• See above description on Seinfeld:
o Given8simplemonowavesamples
 Sampled at 48Khz, 32-bit
• Create 8 separate simple waves
o Intro_mono o A_mono
o AtoB_mono o B_mono
o BtoC_mono o C_mono
o CtoA_mono o End_mono
• On controlling playlist
o SndID201–isthecontrollerforthisplaylist
Start Demo 2 –hit the “2” key to trigger it
• This is triggered in the update() method of the game o Readthekeyboardinput
o ThenloadandgowithyourDemo2
• The demo should play from there.
o Nouserinterventionneeded–justneedthetimertriggersworking.
• Print the name of each wave as it stitched in the XAudio2 Callback
o Sinceonlyonewaveisstitchedatatime
o Thenamesshouldbeprintedwiththecallback…
 They shouldn’t be burst on the screen
 Instead one at a time… with delays between them o UseDebug::out()fortheprinting
Submission Report Keenan
Real-time Multithreaded Architecture Milestone

Real-time Multithreaded Architecture CSC 388/588
use Adobe Reader to complete
Submission Report Keenan
(Type in fields)
Time (seconds)
Voice Callback
Stream End Triggers next SrcVoice
Part A: Load sounds
o AddDebug::out()toshowthecallonthecorrectthread When loaded start time demo
• In Demo (Start with a key press)
o BlockingLoadingIntrowave
o BlockingLoadingAwave
o BlockingLoadingAtoBwave o BlockingLoadingBwave
o BlockingLoadingBtoCwave o BlockingLoadingCwave
o BlockingLoadingCtoAwave o BlockingLoadingEndwave
• Debug printing for each load
o InitiateonGameThread
Part B: Start the demo
• On the Game THREAD o At0seconds
Voice Callback
Stream End Triggers next SrcVoice
 Play 201, pan center, volume 70%
• Print the name of each wave as it stitched in the XAudio2 Callback
Repeat pan Center,Right,Left Every 10 secs Until song finishes
Load wave Load wave Load wave Load wave Load wave Load wave Load wave Load wave
Blocking Load End Initiated On Game thread Blocking Load C to A Initiated On Game thread Blocking Load C Initiated On Game thread Blocking Load B to C Initiated On Game thread Blocking Load B Initiated On Game thread Blocking Load A to B Initiated On Game thread Blocking Load A Initiated On Game thread Blocking Load Intro Initiated On Game thread
Snd_A Pan Center
Priorty: 200 Initiated on Game thread
Snd_A Pan 100% Left
Priorty: 200 Initiated on Game thread
Snd_A Pan 100% Right Priorty: 200 Initiated on Game thread
Snd_A Pan Center
Priorty: 200 Initiated on Game thread
Snd_A Pan 100% Left
Priorty: 200 Initiated on Game thread
Snd_A Pan 100% Right Priorty: 200 Initiated on Game thread
Snd_A Pan Center
Priorty: 200 Initiated on Game thread
Snd_A Pan 100% Left
Priorty: 200 Initiated on Game thread
Snd_A Pan 100% Right Priorty: 200 Initiated on Game thread
Snd_A Play 201 Pan center, 70% Vol Priorty: 200 Initiated on Game thread
Real-time Multithreaded Architecture Milestone

Real-time Multithreaded Architecture use Adobe Reader to complete Submission Report
CSC 388/588
(Type in fields) Keenan
o Sinceonlyonewaveisstitchedatatime
o Thenamesshouldbeprintedatintervalsproportionaltothe
o At10seconds
 Pan Right 201
o At20seconds
 Pan Left 201
o At30seconds
 Pan Center 201
• Repeat the panning pattern
o Center,Right,Left–10secondsapart
 Do this until the audio ends
individual wave playback
 They shouldn’t be burst on the screen
 Instead one at a time… with delays between them
Real-time Multithreaded Architecture Milestone

Real-time Multithreaded Architecture use Adobe Reader to complete CSC 388/588 (Type in fields)
Demo 3: Priority
Demo 3: Priority
 You need to use FileSlow methods for milestone2
 All Sound wave assets need to be loaded/initiated from Game Side
• Given 1 simple mono wave samples o Sampledat48Khz,32-bit
Submission Report Keenan
• Create 1 separate simple playlists (scripts) – one sound wave, one sound ID o 301–Coma
• For DEMO reasons we are allowing a maximum of 6 sound calls at a time o Otherwisethisdemowouldbe2xlonger
• You need the ability to print to the output window the current status of each sound call o Handle,priority,timeplaying
 Need handles – unique identifier
o Forexample:(3handles–intheactivetable)
 ——- Active Table ——————
 0xAAAA0001: 10  0xAAAA0004: 50  0xAAAA0005: 75
1500 ms 1500 ms 200 ms
o UseDebug::out()
 This shows the thread name as well…
• Sound call for this demo is more of a placeholder
o Keepthevolumedownto10%forallofthesecall o Lowernumberisthehigherpriority
 Example: Snd_A 50 priority kills a Snd_X 75 priority
o IfSnd_AnewcallhasthesamepriorityofexistingSnd_X’spriority,
 Kill the oldest sound call with the same priorty
• Call the SPECIAL loading file loading functions
o SincemanyhaveSolidStateDrive…weneedtosimulate  Delay and latency of network or slow hard drive
o UsetheFILE_SLOWclasstosimulatelatency  FileSlow::Open()
 FileSlow::Read()
 FileSlow::Seek()
 FileSlow::Tell()
 FileSlow::Close()
Real-time Multithreaded Architecture Milestone

Real-time Multithreaded Architecture use Adobe Reader to complete CSC 388/588 (Type in fields)
Start Demo 3 –hit the “3” key to trigger it
• This is triggered in the update() method of the game o Readthekeyboardinput
o ThenloadandgowithyourDemo3
• The demo should play from there.
o Nouserintervention

程序代写 CS代考 加微信: powcoder QQ: 1823890830 Email: powcoder@163.com