Develop games faster & easier in Visual Studio C++
Go beyond the limitations of Visual Studio with Visual Assist’s tailored features and support for Unreal Engine 4 & 5. Experience context-aware suggestions, snappy performance, and minimal loading time even in large game projects.
Turn your vision into reality with tailored support for Unreal Engine
Understand code easily
VA’s parser fully understands the context of Unreal extended code language and adjusts syntax highlighting and indentation accordingly. Annoying tabs, false errors, and unlabeled symbols when declaring UFUNCTIONS and UCLASS are now history.
Get Relevant Hints
Type specifiers rapidly and with less switching to documentation for most U*Macros. If you modify the engine or add new specifiers, Visual Assist will detect and add suggestions for those as well.
Works With Everything Else
Visual Assist reads U*Macro specifiers & we’ve used that to make our features smarter. Goto, Goto Related, Find References, Rename & Change Signature have all been extended to support implicit methods.
Go Beyond Limits
One of the limitations of Visual Studio’s default parser is it struggles in large solutions commonly associated with game development. With Visual Assist, you can code without all the incorrect red squiggles & save memory for other tasks.
Context-Aware Dialogs and Documentation
The documentation for Unreal Engine C++ is often in the code itself. Visual Assist understands Unreal’s extended code language so it will show comments and dialogs from base classes and U*Macro specifiers.
Support for UE
Support for Unreal Engine
Visual Assist only supports Unreal Engine 4 and later.
Visual Assist includes features specific to development with Unreal Engine (UE), including support for UE keywords, preprocessor macros, and solution setup.
Enable support for UE in the Game Development option of Visual Assist.
Enabling support changes only the UI of Visual Assist. It does not affect the set of known symbols in a solution. As with non-UE solutions, known symbols are determined by #include directives and project include paths.
The first time you open a UE solution, whether or not support in the UI is enabled, Visual Assist parses a multitude of UE4 engine headers. After that, the symbols are available to all solutions that include them. If you cease all development with UE4, rebuild your symbol database to reclaim disk space and discard knowledge of all UE symbols.
When you select support for UE, you can choose the Always option to enable functionalities for all your projects, or Detect automatically allowing Visual Assist to detect them when you are working on a UE project.
There are different options to parse and index folders containing internal engine plugins from UE:
To not parse and index folders with UE plugins select the None option, this option significantly improves the parse time.
Parse and index folders containing UE plugins that are referenced in the project files or are enabled by default with the Referenced option, this option is selected by default and improves parse time.
Select All to include in the parse and index process folders containing UE internal engine plugins, even plugins your project does not use, this option slows down the parse time.
Parse and index folders containing UE generated header or source files by checking the Index generated code option. Otherwise, they will be skipped, improving parse time. By default, this option is unchecked.
The auto-format feature applies changes on pasted code if it contains one of the following UE macro definitions: UCLASS, USTRUCT, UPROPERTY, UFUNCTION, UENUM, UDELEGATE, GENERATED_UCLASS_BODY, GENERATED_USTRUCT_BODY, GENERATED_UINTERFACE_BODY, or GENERATED_IINTERFACE_BODY. By default, the Disable indent and format on pasted code option is checked. Otherwise, the auto-format feature will not apply changes to the pasted code.
Enable support for shader files such as .USF, .USH, .HLSL, and apply advanced syntax coloring and navigation features.
Also, Enable support for CUDA files such as .CU and .CUH, and apply advanced syntax coloring and navigation features.
Visual Assist features
Visual Assist has a number of general C++ features that are also useful for game development.
Open and search files (Shift + Alt + O)
Instead of opening the file explorer, VA lists all the projects in the solution in a single dialog menu. It is powered by a powerful context-aware search function so you can even find associated files by merely typing in a related file or string— an extremely useful feature for game projects.
Support for UE
Support for Unreal Engine
Visual Assist only supports Unreal Engine 4 and later.
Visual Assist includes features specific to development with Unreal Engine (UE), including support for UE keywords, preprocessor macros, and solution setup.
Enable support for UE in the Game Development option of Visual Assist.
Enabling support changes only the UI of Visual Assist. It does not affect the set of known symbols in a solution. As with non-UE solutions, known symbols are determined by #include directives and project include paths.
The first time you open a UE solution, whether or not support in the UI is enabled, Visual Assist parses a multitude of UE4 engine headers. After that, the symbols are available to all solutions that include them. If you cease all development with UE4, rebuild your symbol database to reclaim disk space and discard knowledge of all UE symbols.
When you select support for UE, you can choose the Always option to enable functionalities for all your projects, or Detect automatically allowing Visual Assist to detect them when you are working on a UE project.
There are different options to parse and index folders containing internal engine plugins from UE:
To not parse and index folders with UE plugins select the None option, this option significantly improves the parse time.
Parse and index folders containing UE plugins that are referenced in the project files or are enabled by default with the Referenced option, this option is selected by default and improves parse time.
Select All to include in the parse and index process folders containing UE internal engine plugins, even plugins your project does not use, this option slows down the parse time.
Parse and index folders containing UE generated header or source files by checking the Index generated code option. Otherwise, they will be skipped, improving parse time. By default, this option is unchecked.
The auto-format feature applies changes on pasted code if it contains one of the following UE macro definitions: UCLASS, USTRUCT, UPROPERTY, UFUNCTION, UENUM, UDELEGATE, GENERATED_UCLASS_BODY, GENERATED_USTRUCT_BODY, GENERATED_UINTERFACE_BODY, or GENERATED_IINTERFACE_BODY. By default, the Disable indent and format on pasted code option is checked. Otherwise, the auto-format feature will not apply changes to the pasted code.
Enable support for shader files such as .USF, .USH, .HLSL, and apply advanced syntax coloring and navigation features.
Also, Enable support for CUDA files such as .CU and .CUH, and apply advanced syntax coloring and navigation features.
Find Symbols (Shift + Alt + S)
Easily sort through thousands of symbols with advanced filtering and sorting: from variables, class, or structs or in a solution. From this dialog, you can copy the symbol, jump to it, or even find all references to it.
Find Symbol in Solution
Visual Assist provides two efficient methods to locate symbols in your solution:
-
Symbols in Solution drop-down in the VA View, which is often visible when editing
-
Find Symbol dialog that is opened on demand, and is more powerful than the drop-down
You can use the keyboard or mouse to navigate both methods.
Visual Assist versus Visual Studio
Visual Studio 2017 provides Go-to-Symbol, which is similar to Find Symbol in Solution. Both implementations provide access to all symbols in a solution, but Visual Assist offers the feature in large solutions and supports advanced filtering and sorting.
Symbols in Solution Drop-down
Visual Assist provides two efficient methods to locate symbols in your solution:
The Symbol in Solution drop-down is the second component of the VA View. The interface to the drop-down is simple and fast, and sufficient if you have reasonable knowledge of the symbol you need.
If the VA View is not open, open it with VAssistX | Tools | VA View or via a shortcut assigned to VAssistX.VAView.
Put focus in the Symbols in Solution drop-down, and type one or more strings to filter the list of all symbols in your solution to include only those containing the strings. Filtering in the drop-down is always case insensitive.
Hover over entries in the drop-down to see definitions and file locations.
Navigate the drop-down with the keyboard or mouse.
Select a symbol using Enter, or Click, to jump to its definition.
Copy a symbol from your source and paste (Ctrl+V) it into the drop-down to quickly find symbols whose names contain the content of your clipboard.
When the drop-down list is open, Copy (Ctrl+C) places the name of the element with focus in the clipboard.
Find Symbol Dialog
Open the Find Symbol dialog via default shortcut (Shift+Alt+S) or toolbar button to see the same list of symbols with their definitions.
Double-Click a symbol to jump to its implementation.
Filtering in the Dialog
Type a string in the edit field of the dialog to filter the list. By default, Visual Assist selects a symbol whose name begins with the filter. If no symbol begins with the filter, Visual Assist selects the first symbol containing the filter.
Type unique filters to locate symbols quickly. Type multiple strings to find symbols whose names contain all of the strings.
Precede a filter with a hyphen to exclude symbols (negative filtering).
Begin a filter with a dot to find symbols that begin with the filter, or contain the dot and substring. A filter that ends with a dot matches ends of symbols. For example “.color” finds symbols that begin with “color” or contain “.color”.
Scope of Search in the Dialog
Toggle the checkbox in the dialog (Alt+S) to restrict the list to those symbols defined in the current solution. If unchecked, the list includes system symbols.
Select “Only classes, struct & namespaces” (Alt+C) to restrict content types and improve responsiveness of the dialog in very large projects.
Context Menu in the Dialog
Right-Click a symbol in the Find Symbol dialog to expose a context menu with several commands and advanced options.
Select “Find References” (Ctrl+F) to launch Find References integral to Visual Assist for the selected symbol.
Disable Tooltips to prevent the opening of hovering tooltips that identify file, surrounding code, and directory of symbol definition. (Tooltips will still open to identify values in partially hidden cells.)
Enable “File columns” to show columns containing files and directories. These columns are especially useful if your solution has numerous like-named symbols defined in different locations. Display of the columns does not affect sorting or filtering within the dialog. When the columns are shown, consider disabling the hovering tooltips that contain identical information.
Enable “Initialize search with editor selection” to make the Find Symbol dialog open with selected text as the current filter. Press Undo (Ctrl-Z) to restore the previous filter(s). If there is no selection, the File Symbol dialog will open with the previous filter.
Enable “Match case if search string contains any uppercase letter” to restrict searches to symbols that match the case of a filter string if the string contains any uppercase letters. Without the setting enabled, “foo” matches “foo” and “Foo”. With the setting enabled, “foo” matches “foo” and “Foo” but “Foo” matches only “Foo”. If you need to find only “foo” with the setting enabled, search for “foo -F”; the negative filter will eliminate “Foo”.
Commands in the context menu are not available in the Symbols in Solution drop-down.
Scrolling in the Dialog
Standard scrolling techniques are available in the Find Symbol in Solution dialog when focus is in the list.
Although non-standard UI, when focus is in the filter edit control, Home and End scroll the list if no filter is present. Once you start typing a filter, the Home and End keys move the text caret in the filter edit control, whereas the Up, Down, PgUp, PgDn, Ctrl-Home, and Ctrl-End continue to scroll the list.
Sorting in the Dialog
Symbols are always sorted alphabetically by name. Clicking column headers does not change the sort order
Symbols Included in the Drop-down and Dialog
Visual Assist includes in the drop-down and dialog all symbols likely the target of a search, and excludes inconsequential symbols. Symbols included vary by type, language, and location.
| Symbol Type | Located in C# file | Located in C/C++ header file | Located in C/C++ source file |
|---|---|---|---|
| Global and namespace symbols (variables, functions, classes, class members, enum names and their items, etc.) | Yes | Yes | Yes |
| #defines | Yes | Yes | No |
| typedefs | N/A | Yes | No |
| Local variables | No | No | No |
Overloaded methods and symbols defined more than once, particularly within #define directives in C/C++, correctly appear multiple times in the drop-down and dialog.
Directory-Based Parsing
If you use directory-based parsing a file need not belong to a solution to have its symbols exposed to Find Symbol in Solution.
Registry Settings
| Value Name | Meaning |
|---|---|
| ParseLocalTypesForGotoNav | Exclude locally defined classes and typedefs from FSIS dialog |
List methods in file (Alt+M)
Navigate the current file from a simple drop-down of classes and methods in it. Filter the list using substrings.
List Methods in File
The Context field of Visual Assist typically shows current context as you edit, but can use the same field to display a list of classes and methods declared or implemented in the current file. (The Context field is the leftmost component of the VA Navigation Bar.)
List contents are updated as you edit.
Use the default shortcut (Alt+M), click the Down-Arrow at the right of the field, or click within the field and then press Down-Arrow, to open the list.
Select an entry to jump to its respective location.
Press ESC or click outside the list to clear it.
Filter List Contents
After the list is open, type within the Context Field to filter the list.
Type multiple words to extend filtering.
Use negative filtering to exclude entries.
Use dot filtering to match beginnings and ends of entries.
Use commas to search for entries that match any one of multiple filters.
Control List Contents
The list of “methods” can include:
classes
methods
methods defined by expansion of C/C++ macros
member variables
-
structs
-
enumerations
-
defines
-
events
-
properties
-
regions
You can control contents of the list, and control how certain items are displayed, by opening the context menu within the list.
Open the context menu within the list, not within the Context Field from which the list emanates. Use Right-Click, not Shift+F10, because focus is still in the Context Field.
If you enable the option to display method parameters, use multi-word filtering to match method and parameter names.
Namespaces
Use the context menu to display or hide namespace scopes and regions.
The following is a list with namespaces.
The same list can be generated without namespaces.
Location and Sort Order
By default, the list of methods is located at the top of your source window and is sorted by occurrence in the file. You can change the location of the entire VA Navigation Bar, and change the sort order of the list of methods, in the options dialog of Visual Assist.
Ability to change sort order is also available in the context menu of the list.
Icons
Icons in the list are common to the IDE.
Registry Settings
| Value Name | Meaning |
|---|---|
| SelectRecentItemsInNavigationDialogs | Force navigation features to select first alphabetical match |
Implement Virtual methods (Shift + Alt + Q)
Quickly generate method stubs for methods of an interface or virtual methods of a base class in C++ or C#. This shortcut opens the Quick actions and refactoring menu which provides many context-aware options depending on where the caret is or what is highlighted.
Implement Interface / Virtual Methods
Quickly generate method stubs for methods of an interface or virtual methods of a base class in C++ or C#. Access this feature from a refactoring menu when on the class you wish to implement. Inserted stubs contain code taken from a VA Snippet, typically code to throw an unimplemented exception and remind a developer to implement functionality.
Implement Interface / Virtual Methods descends into inherited classes, so methods from base classes of multiple depths can be implemented.
Access
Open the Quick Action and Refactoring menu (Shift+Alt+Q) from a class that is derived from a base class. Select “Implement Virtual Methods”.
Select methods to implement. Methods already implemented are unavailable.
Methods are implemented using a language-dependent VA Snippet, Create from Usage.
Check / uncheck all methods by right clicking on the method.
Implementing Interfaces
If you implement methods of an interface class, all methods are implemented without an intervening dialog.
If a base class has pure virtual methods, and is therefore an interface, the dialog to select methods opens with the pure virtual methods checked, and non-pure virtual methods unchecked.
In a scenario with pure virtual methods, only the pure virtual methods are checked by default.
Multiple Inheritance
To implement methods from more than one inherited class or interface, invoke Implement Interface / Virtual Methods from the current class name, not from an individual interface or base class.
To implement methods from a single inherited class or interface, invoke Implement Interface / Virtual Methods from the name of a base class, not from the current class name.
Complex Scenarios
In a mixed scenario of multiple inheritance, with abstract and concrete classes, Visual Assist lets you select from a list in which only the interface methods are selected by default.
Filtering
If the list of methods to implement/override is long, use filtering to reduce its size.
Filtering does not affect the states of checked entries so you can filter repeatedly to find a disparate set of methods.
As possible in other dialogs of Visual Assist, use multiple strings, negative filtering, and dot filtering to reduce the size of the list.
If you want to search names and parameter lists, disable the option to filter by name only.
Sorting
By default, methods are sorted in the order they appear in classes. If you wish methods within each class to be sorted by name, enable the respective sort option.
Keyword to Generated C++ Methods
In C++, Code Generation provides you with an option to include the virtual and/or override keyword in methods generated by Implement Interface / Virtual Methods.
Virtual
In C++, use the “virtual” keyword when implementing an interface or overriding virtual base methods.
Override
In C++, use the “override” keyword when implementing an interface or overriding virtual base methods.
You can append “override” to a virtual function declaration to make the compiler override a virtual method inherited from a base class. If the virtual method does not exist in the base class or has a different signature, the compiler raises an error and the compilation fails.
You can insert the “override” keyword on the Code Generation settings in the Options dialog for Visual Assist.
Virtual and Override
In C++, you can also select “virtual and override” to use both keywords.
Default Method Body
Edit the language-dependent VA Snippet for Create From Usage Method Body to change the default method body created by Implement Interface / Virtual Methods.
The following is the default VA Snippet for Create From Usage Method Body in C++.
Open corresponding file (Alt + O)
This is usually used to quickly switch between header and implementation files. VA’s version gives you a menu when more than one destination is possible.
Navigate Back and Forward
Move about code with Navigate Back and Navigate Forward, much like you move about with an Internet browser. Navigate to previously visited locations in your code, and forward again to your most recent location.
Visual Assist versus Visual Studio
Microsoft Visual Studio has built-in navigation commands similar to those in Visual Assist, with the primary difference being in the waypoints recorded. Visual Assist records fewer waypoints so navigation among them is more efficient. For example, Visual Assist ignores waypoints associated with simple movement of the text caret.
Access
By default, Alt+Left navigates back, and if you remove the Alt+Right shortcut for Edit.CompleteWord in Microsoft Visual Studio, Alt+Right navigates forward. (The “bindings” are active if no other commands are bound to the shortcuts.)
Alternate Shortcuts
Assign alternate shortcuts to VAssistX.NavigateBack and VAssistX.NavigateForward, including those assigned to the built-in versions of Navigate Backward (Ctrl+-) and Navigate Forward (Shift+Ctrl+-).
Toolbars
Visual Studio
Visual Assist does not include back and forward buttons in its default toolbar, assuming users prefer keyboard access. If you prefer buttons, add them using the customize feature of the IDE.
Visual C++ 6.0
Microsoft Visual C++ 6.0 has no built-in navigation commands, so the commands integral to Visual Assist appear in the default toolbar.
Waypoints
The following table identifies the waypoints recorded by Visual Assist and Microsoft Visual Studio.
| Saved Waypoint | Visual Assist all IDEs | Visual Studio 2010 and newer | Visual Studio 2008 and older |
|---|---|---|---|
| Source edits | ✔ | ✔ | ✔ |
| Caret navigation | ❌ | ✔ | ✔ |
| File switch via Solution Explorer | ✔ | ✔ | ✔ |
| File switch via click on file tab | ✔ | ✔ | ❌ |
| IDE Go to definition/declaration | ✔ | ✔ | ✔ |
| VA GoTo Implementation and GoTo Related | ✔ | ✔ | ✔ |
| IDE Find References | Upon double click/F8 | ✔ | ✔ |
| VA Find References | ✔ | ✔ | ✔ |
| Find in Files | Upon double click/F8 | ✔ | ✔ |
| Restoring column position | ❌ | ✔ | ✔ |
Registry Settings
| Value Name | Meaning |
|---|---|
| BrowserAppCommands | Configure mouse back and forward buttons |
"If I lose my hands I could type with my mouth. Take my VA and I'm done."
It doesn't write the code for me, but it provides the tools for me to write it faster and better. I'm getting to really like the VA Code Inspection and the Extract Method really helps.
It doesn't write the code for me, but it provides the tools for me to write it faster and better. I'm getting to really like the VA Code Inspection and the Extract Method really helps.
"Great software to code fast!"
I think VA does its core job best! Refactoring of code and which helps me tremendously with my projects. I can code faster and deliver faster. I think I am so addicted to the software that I cannot do without it even one day! And thats true!
I think VA does its core job best! Refactoring of code and which helps me tremendously with my projects. I can code faster and deliver faster. I think I am so addicted to the software that I cannot do without it even one day! And thats true!
"Good performance on large projects, handy for everyday workflow."
The most performant solution among several alternatives I've tried on a large project.
The most performant solution among several alternatives I've tried on a large project.
"Visual Assist is absolutely essential."
Visual Assist is absolutely needed for professional programming in Visual Studio… The time saved through the use of these very basic things is quite incalculable to the point where there's just no reason for anyone to ever use Visual Studio without Visual Assist.
Visual Assist is absolutely needed for professional programming in Visual Studio… The time saved through the use of these very basic things is quite incalculable to the point where there's just no reason for anyone to ever use Visual Studio without Visual Assist.
"Visual Assist is an absolute essential when it comes to working with large code bases."
Visual Assist drastically improves upon the built-in Intellisense system provided in Visual Studio. When using Visual Assist, I find that I spend much less time combing through Unreal Engine code as well as my own. The 'Search for Symbol' feature also allows filtering out engine code in order to quickly find symbols within my own code.
Visual Assist drastically improves upon the built-in Intellisense system provided in Visual Studio. When using Visual Assist, I find that I spend much less time combing through Unreal Engine code as well as my own. The 'Search for Symbol' feature also allows filtering out engine code in order to quickly find symbols within my own code.
"A real assistant."
Fewer errors, less googling, and less confusion. It provides what I expect from a modern IntelliSense.
Fewer errors, less googling, and less confusion. It provides what I expect from a modern IntelliSense.
