the adobe flash system includes a visual development environment that saves and works with flash programs in their “ source code ” format , which is a proprietary binary - formatted fla file . when a flash movie or game is distributed to end users , the flash development environment “ publishes ” the service into an executable form . this executable form of flash service is a proprietary binary - formatted swf file containing bytecode instructions and data that completely specify the execution of the service . the flash player is the run - time environment that is responsible for interpreting and executing the bytecode and data in the swf file . swf files contain a series of tags that describe the visual elements and sounds used in the game , along with their movements and transformations . in addition to these tags , the developer of the game can include logic written in the actionscript scripting language . during the publishing process , this actionscript logic is transformed from its textual representation to a bytecode representation in the swf file . while not a completely reversible process , it is possible however to re - interpret this bytecode representation such that the original actionscript that produced it is approximated sufficiently to allow its modification using a service or advertisement insertion tool . to demonstrate the operation of a representative embodiment , a set of commercially available online swf game files from well known game development studios were used . these swf game files were obtained either directly from the game development studio itself or from a publisher of the game . in all cases , the games were the standard issue as would be given to any and all publishers of the game . fig1 is a flow diagram illustrating operations performed by an advertising delivery system in accordance with a representative embodiment . additional , fewer , or different operations may be performed in alternative embodiments . in a representative embodiment , the delivery system allows for the insertion of a service that causes a presentation of advertisements within a flash program . in an alternative embodiment , the inserted service may cause a presentation of other content such as a survey or information regarding rival players or may cause an extraction of player achievement data . in an operation 10 , a service insertion tool loads a swf program file such as a swf file for a game . in an operation 12 , the service insertion tool modifies each function within the swf game file by inserting a small portion of bytecode at the beginning of each function body . a function includes logic designated to cause the execution of various tasks by the flash program . the functions can be defined by specific flash bytecode instructions such as definefunction , definefunction2 for actionscript 2 . 0 , or abcmethod table for actionscript 3 . 0 . the inserted bytecode creates a run - time output of a string that uniquely identifies the respective function within the swf game file . in an operation 14 , the game is played and the service insertion tool collects the run - time string outputs as the game is played . the service insertion tool uses the run - time string outputs to map the use of the functions throughout execution of the swf game file . in this way , the service insertion tool can identify what functions are being utilized at varying points in the game . in an operation 16 , the service insertion tool receives an input from a technician indicating that the next action or input from the technician is to be a trigger for an advertisement or other type of content . in an operation 18 , the service insertion tool receives a second input from the technician designating a frame or spot within the game where an advertisement or other content is to be triggered . such a frame or spot may include the end of a level , the end of the game , or another spot within the game where the game is inactive and awaiting a user input . in an illustrative embodiment , the input may be a selection of a next level button or start new game button by the technician . in an operation 20 , the service insertion tool identifies the first function executed in the swf game file as a result of the input received from the technician designating the advertisement trigger . the service insertion tool identifies the first function based on the run - time string outputs and the mapped function use of the swf file . the first function is a handler for the flash object that represents the input received from the technician indicating the advertisement trigger . for example , the first function may be the handler for the flash object representing a “ next level ” or “ play again ” button selected by the technician as the advertisement trigger . this handler function contains flash bytecode that causes execution of the game to resume at an appropriate point , such as when a user selects the “ next level ” or “ play again ” button . in an operation 22 , the bytecode of the first function is modified to include additional logic that when executed causes a selected advertisement or other content to be presented in response to an occurrence of the designated advertisement trigger . at the conclusion of the advertisement , the handler function executes its original bytecode logic so that the game is resumed again at the appropriate point after termination of the advertisement . in an operation 24 , the original swf game file is transformed into a new enhanced swf game file . as such , the modified bytecode of the functions used to cause the presentation of the advertisements is inserted into a new enhanced swf game file along with the remaining unchanged portions of the original swf game file . in an operation 26 , the service insertion tool plays the game again allowing the technician to verify that the advertisement or other content is triggered and displayed as expected and that the game otherwise functions properly . the service insertion tool allows a technician without specialized skill or knowledge in flash programming or other types of programming to easily and efficiently insert a service that causes content such as advertisements to be presented in a flash game . the service insertion tool also allows the enhanced swf game file to be easily and quickly re - configured if and when the service insertion tool and original swf game file are updated . according to a representative embodiment , when the transformation is applied , only those elements of the game swf that have modified functions are transformed in any way . the remaining elements of the swf file are not modified . when the enhanced game swf file is produced , those non - transformed elements of the swf file are written to the enhanced game swf file with exactly the same byte sequence as in the original game swf file . thus , any elements of the swf file that are not involved in the transformation are guaranteed immutable and not subject to faulty interpretation and modification in the enhanced game swf . later , when the game is played by a game player content may be presented in response to an occurrence of the selected content triggers based on an established service policy . a service policy may be downloaded at the start of the game from a service policy server or may be alternatively communicated to the enhanced game swf file . the service policy contains instructions as to what content will be presented , when the content will be presented , and how the content will be presented . the following further describes the service insertion tool and process used to transform a swf - based game into a new enhanced swf file that contains additional logic to display content such as video advertisements at appropriate points during game play as well as triggering events containing player achievement information that can be used by the hosting container ( e . g . a website ) to enable community based features . fig2 illustrates components in a representative service insertion tool 28 . service insertion tool 28 includes a gui - based viewer 32 and a processor 34 . an original swf file 30 is inputted into service insertion tool 28 . original swf file 30 includes all logic necessary to execute the corresponding flash program or game . original swf file 30 is loaded into service insertion tool 28 . viewer 32 displays the running flash program or game and presents a user interface that allows a technician to interact with the game . viewer 32 is further configured to receive inputs from the technician . processor 34 is programmed to analyze the bytecode instructions contained in original swf file 30 , process inputs received from the technician , and implement modifications to the original swf file 30 to cause content such as advertisements to be presented . processor 34 may implement modifications by inserting pre - defined blocks of logic that handle initialization of data structures and execution of a service that causes content such as preroll and interstitial advertisements to be presented . service insertion tool 28 produces an enhanced swf file 36 . enhanced swf file 36 includes the logic modified to insert a service that causes content and advertisements to be presented and any original logic that was unmodified during the service insertion process . fig3 illustrates a representative gui ( graphical user interface ) 40 . gui 40 includes sections 42 , 44 , 46 , and 48 . section 42 includes a panel showing the game running in an instance of the flash player . the flash game in section 42 is interactive and can be played . within section 42 is an ad insertion button 43 . selection of ad insertion button 43 indicates that the next action or input from the technician is to designate a trigger for an advertisement or other type of content . section 44 provides a visual representation of the properties in the header of the flash program at the top and below a hierarchical representation of all the bytecode contained in the file . the bytecode is divided into a series of frames , each containing a hierarchical set of tags . while the game is being played , the frame number that is active may be highlighted in section 44 . section 46 may include the function currently be executed as the game is played as well as a list of past functions that were previously executed . modifications to the swf file can cause presentation of a pre - roll advertisement ( e . g ., a video ad displayed during the initialization sequence for the game ), presentation of an interstitial advertisement ( e . g ., a recurring video advertisement displayed during a natural breaking point in the game , such as between levels ), and , at various points during game play , extraction of the user &# 39 ; s score and generation of an event that is passed out from the flash game to a website . to play an advertisement , the technician identifies a point where the flash game playback can be paused while a video advertisement is shown . after a selection of ad insertion button 43 , the next action or input from the technician received by the tool signifies a trigger for an advertisement . the service insertion tool determines the first function executed after this action or input from the technician and modifies this function to play an advertisement prior to resuming the game . fig4 shows a representative graphical user interface after selection of a trigger . in an embodiment , after the action or input from the technician identifying the trigger , the service insertion tool may present a window 50 providing several possible functions to serve as triggers for the advertisement . as such , the service insertion tool may receive a selection of the precise function to serve as the trigger from the technician . fig5 shows a representative graphical user interface prior to selection of a function that starts a new game . an appropriate place to show a preroll advertisement is immediately before invoking this function . therefore , the technician can select this as the point to insert the preroll advertisement and a pre - defined block of logic that plays an advertisement is inserted prior to this function by the service insertion tool . the function is modified such that logic to play an advertisement is inserted ahead this function call . when the advertisement is done , the advertisement playing logic invokes the function that starts the next level . similarly , the technician may identify a point in game play that occurs at a natural breaking point , such as between levels of a game . fig6 shows a representative graphical user interface after completion of a level of the game . the technician may submit an input designating a trigger for the advertisement ( i . e ., selection of a next level button ). the service insertion tool identifies a block of logic within the game swf file that is executed at each of these break points , and selects a function ahead of which the logic for displaying an advertisement is inserted . for extracting and exposing player achievement information , the service insertion tool identifies the variable ( s ) within the swf game logic that store the player &# 39 ; s score , current level , and other items of interest . once these variables are identified , the service insertion tool inserts logic into the game swf to trigger an event that passes the value of this variable out to the container that is hosting the game swf . in most cases , this event is exposed to the javascript in the web page that is hosting the flash player object . at the end of the process described above , the technician and service insertion tool have produced an enhanced game swf file . the output of the service insertion tool is the enhanced game swf file in which the user experience of the game remains identical to the original with the exception of the addition of a service that may cause video advertisements to be presented at specific points during game play . this enhanced game swf file is saved and can be packaged and distributed in the same manner as the original game . because the advertisement display logic is built right into the swf game file itself , even if unauthorized websites obtain and host this modified game , they will also display advertisements and the advertisement revenue will flow to the company that originally hosted the enhanced game swf . this scenario is in contrast to the traditional model of generating advertising revenue for hosted flash games in which the swf game file itself contains no advertisement display logic . in this case , advertisements are displayed by the html page that surrounds the flash player object that is executing the game . in this case , any unauthorized capture and hosting of the game swf file will enable an unauthorized website to host the game without any advertising revenue going to the company that originally hosted the game swf . in another representative embodiment , a pre - roll advertisement is added automatically without involvement of a technician . automatic addition of a pre - roll advertisement includes the addition of preroll advertisement delivery bytecode logic at the beginning of a computer program , such as a game , prior to any of the game bytecode being executed . in some cases , adding a bytecode requires the creation of a new frame on the main flash timeline . in other cases , such an addition requires reordering of existing frames on the timeline and / or scanning all the bytecode within the file to adjust any references within the bytecode to absolute frame numbers , which are changed as a result of the addition of a new frame for the preroll advertisement at the beginning of the swf . in yet another representative embodiment , a beaconing service is included with the flash game that does not require a technician to examine the game and define the transformation operation . fig7 illustrates a beaconing operation in which a message is sent from a computer 72 on which the game is played to a server 74 via a network 76 . the message provides information regarding the game session durations while the game is being played . as such , the server 74 can receive information on the length of each game play session . without such messaging , an operator of a flash gaming website cannot determine how long each game play session lasts because after the game swf is loaded onto the webpage and starts executing , it typically no longer makes any contact with the server . without the beacon messages , the website operator does not know at what point the user closes the browser window or navigates away from the page hosting the game swf to another page . with the beaconing messages added to the game , the website operator knows , subject to the frequency of the messages , how long the user &# 39 ; s game session lasts . it is important to understand that any of the embodiments described herein may be implemented as computer - readable instructions stored on a computer - readable medium . upon execution by a processor , the computer - readable instructions can cause a computing device to perform operations to implement any of the embodiments described herein . for example , in an embodiment , the service insertion tool may be stored on a memory of a computer as a computer - readable medium . the memory may be operatively connected to a cpu which may process the computer - readable medium thereby running the service insertion tool . in addition , the cpu and the memory may be connected to a display which is configured to present visual representations of the service insertion tool . the foregoing description has been presented for purposes of illustration and of description . it is not intended to be exhaustive or limiting with respect to the precise form disclosed , and modifications and variations are possible in light of the above teachings or may be acquired from practice of the disclosed embodiments .
a method of associating a service with a computer software product includes loading an executable software file containing software code that upon execution carries out a software program , inputting code into functions of the software file , mapping execution of the functions of the software file , receiving an input identifying a content trigger , identifying a function of the software file associated with the content trigger , and modifying the function associated with the content trigger to cause presentation of service in response to an occurrence of the content trigger . an enhanced software file may be produced that includes the modified function .