Welcome to VC and the forum.
You can't nest logic blocks within logic blocks, but you can have consecutive logic blocks and you can use the action
VC.StopMacro to avoid moving on to the next IF statement as needed.
It sounds as though you will want to use events (
https://voxcommando.com/mediawiki/index.php?title=Events), not a voice command, in order to evaluate whether your video game is active.
VC automatically generates events every time a window is focused or unfocused.
It depends what you mean by "disable". If you want VC to stop listening for voice commands while you're playing a videogame, then the action to use is VC.Off.
VC is very customizable and there are different ways to solve the same problem. Here is one possible approach to your situation (if I'm understanding the objectives properly). I used Chrome focus events just as an example.
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.2.4.5-->
<commandGroup open="True" name="Daniel's commands" enabled="True" prefix="" priority="0" requiredProcess="" description="">
<command id="310" name="Playing video game (stop listening)" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="Here i'm using the Chrome.focused/unfocused events. You would look in the History window for the events associated with your videogame. They will appear there after you have focused and unfocused that program. Drag those events onto this command in your command tree. You can then delete my placeholder events, and you'll have to update the if statements in the command macro accordingly.">
<if ifBlockDisabled="False" ifNot="False">
<ifType>(A)==(B)</ifType>
<ifParams>{LastEvent}&&Focused.Chrome</ifParams>
<then>
<action>
<cmdType>VC.Off</cmdType>
<params />
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>VC.StopMacro</cmdType>
<params />
<cmdRepeat>1</cmdRepeat>
</action>
</then>
<else />
</if>
<if ifBlockDisabled="False" ifNot="False">
<ifType>(A)==(B)</ifType>
<ifParams>{LastEvent}&&Unfocused.Chrome</ifParams>
<then>
<action>
<cmdType>VC.On</cmdType>
<params />
<cmdRepeat>1</cmdRepeat>
</action>
</then>
<else />
</if>
<event>Focused.Chrome</event>
<event>Unfocused.Chrome</event>
</command>
<command id="288" name="test launch {1}" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="The first IF statement is just ot make sure that you're not playing the video game. If you are, we immediately exit this macro without doing anything. Otherwise, it goes on to evaluate the second IF statement.

I've attached a sample payload XML file to the forum post. You'll need to copy it into your VC/Payloads folder. You can delete the OSD action; it's just here to demonstrate the difference between {1} and {PF.1} notation.">
<if ifBlockDisabled="False" ifNot="False">
<ifType>ProgramFocused</ifType>
<ifParams>chrome&&</ifParams>
<then>
<action>
<cmdType>VC.StopMacro</cmdType>
<params />
<cmdRepeat>1</cmdRepeat>
</action>
</then>
<else />
</if>
<if ifBlockDisabled="False" ifNot="False">
<ifType>ProcessRunning</ifType>
<ifParams>{PF.1}&&</ifParams>
<then>
<action>
<cmdType>OSD.ShowText</cmdType>
<params>
<param>{PF.1} is already running.</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
</then>
<else>
<action>
<cmdType>Launch</cmdType>
<params>
<param>{1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
</else>
</if>
<phrase>test launch</phrase>
<payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">payloads\Daniel_programs.xml</payloadFromXML>
</command>
</commandGroup>
See the link in my signature tips if you're not sure how to import the above (but basically you can just copy and paste it into your command tree in the editor).
You'll also need the attached
payload XML file, which you should place in your VC\payloads folder. It's just an example. You may have to revise it to work properly on your system.