Skip to content
Permalink
Browse files
Add homepage and VeniceEXT main page
  • Loading branch information
OrfeasZ committed Sep 29, 2020
1 parent 83e55f4 commit 348eb84feaadb4bc018744215f8b9615ace2af98
Show file tree
Hide file tree
Showing 10 changed files with 148 additions and 10 deletions.
@@ -3,4 +3,66 @@ title: VU Documentation
description: The VU documentation and wiki site, containing information and tutorials on everything from using VU and setting up servers, to creating mods.
---

Welcome to the VU wiki. This is currently a work in progress. Please come back soon.
Welcome to the VU wiki & documentation!

This website is dedicated to information and guides related to VU, from playing to hosting servers and creating mods. You can use the links below or the sidebar to navigate the different sections of this site. You can also suggest fixes and improvement by using the `Edit this page` and `Create documentation issue` links at the right side of each page.

## Want to just play VU?

---

[Start playing VU](/general/playing/)

A short guide on how to get VU set up on your computer and start playing.

---

[Troubleshooting & FAQ](/troubleshooting/)

Solutions to common problems and answers to common questions about VU.

---

## Want to host a VU server?

---

[Server hosting category](/hosting/)

This category has everything you need to host your own VU server.

---

[Setting up and using mods](/hosting/mods/)

Find out how to set up and use mods on your VU servers.

---

## Want to create a VU mod?

---

[Modding overview](/modding/)

An overview of VU's modding capabilities.

---

[Your first mod](/modding/your-first-mod/)

A tutorial on how to create your first mod.

---

[Modding guides](/vext/guides/)

In-depth guides about different modding topics and systems.

---

[VeniceEXT Reference](/vext/ref/)

A full API reference of the VeniceEXT scripting engine.

---
@@ -8,11 +8,11 @@ Playing VU is as simple as it gets. Below are the steps you need to follow to ge

## Installing VU & BF3

You can use VU on any computer running Windows 7 SP1 or newer. To begin, download the latest installer from the [downloads page](https://veniceunleashed.net/downloads) and install it on your computer. Make sure that you have downloaded the latest version of Battlefield 3 from Origin (alongside any DLCs you would like to play) and that you have launched the game at least once via Battlelog (either singleplayer or multiplayer). Then, look for the `VU Client` entry on your start menu or your desktop to launch VU.
You can use VU on any computer running Windows 7 SP1 or newer. To begin, download the latest installer from the [VU homepage](https://veniceunleashed.net/) and install it on your computer. Make sure that you have downloaded the latest version of Battlefield 3 from Origin (alongside any DLCs you would like to play) and that you have launched the game at least once via Battlelog (either singleplayer or multiplayer). Then, look for the `VU Client` entry on your start menu or your desktop to launch VU.

## Creating an account and linking your Origin account

Before you can play VU, you will need to register an account. You can do so either directly from [here](https://veniceunleashed.net/register) or by launching the client and using the in-game "Create account" button present in the login screen. After you've created your account and logged in to the VU client you will be required to link your Origin account so we can verify your game ownership. This is a one-time process and requires Origin to be running. Once you see the Origin activation prompt, minimize VU, launch Origin and login with an account that owns Battlefield 3. Then return to VU and follow the on-screen prompts. After the process is finished you can turn Origin off if you wish.
Before you can play VU, you will need to register an account. You can do so either directly from [here](https://veniceunleashed.net/signup) or by launching the client and using the in-game "Create account" button present in the login screen. After you've created your account and logged in to the VU client you will be required to link your Origin account so we can verify your game ownership. This is a one-time process and requires Origin to be running. Once you see the Origin activation prompt, minimize VU, launch Origin and login with an account that owns Battlefield 3. Then return to VU and follow the on-screen prompts. After the process is finished you can turn Origin off if you wish.

## Creating your soldier

@@ -1,5 +1,5 @@
---
title: Server Hosting
title: Server hosting
description: Information on how to setup and manage a VU server.
weight: 2
---
@@ -11,7 +11,7 @@ Before you can run a VU dedicated server you must first make sure that you have


## Generating server keys
For each server you wish to run, you will need to generate a unique server key. To generate a key and manage your existing keys, simply login to the VU website with your account and visit [the key management portal](https://veniceunleashed.net). Download your server key, you will need it when you're setting up your server. If you have reached the server key limit and require more you can contact an admin on [Discord](https://discordapp.com/invite/RWU3gb) or via the [support page](https://veniceunleashed.net/support).
For each server you wish to run, you will need to generate a unique server key. To generate a key and manage your existing keys, simply login to the VU website with your account and visit [the key management portal](https://veniceunleashed.net/keys). Download your server key, you will need it when you're setting up your server. If you have reached the server key limit and require more you can request a quota increase from [this page](https://veniceunleashed.net/key-quota).

## Getting Battlefield 3

@@ -77,7 +77,7 @@ We must now download the VU files and extract them inside the `~/vu/client` fold

```
cd ~/vu/client
wget https://veniceunleashed.net/VeniceUnleashed.zip
wget https://veniceunleashed.net/files/vu.zip
unzip VeniceUnleashed.zip
rm VeniceUnleashed.zip
```
@@ -7,7 +7,7 @@ weight: 2

## Downloading & installing VU

First, download the latest version of VU from the [downloads page](https://veniceunleashed.net/downloads). By default, the installer will place VU in `%LocalAppData%\VeniceUnleashed\client`. If you don't wish to use the installer, you can download the ZIP version of the client and extract it to a folder of your choice. Just make sure that the user you will be running your server under has write permissions to that folder.
First, download the latest version of VU from the [VU homepage](https://veniceunleashed.net). By default, the installer will place VU in `%LocalAppData%\VeniceUnleashed\client`. If you don't wish to use the installer, you can download the ZIP version of the client and extract it to a folder of your choice. Just make sure that the user you will be running your server under has write permissions to that folder.

## Setting up the VU server

@@ -8,7 +8,7 @@ Modding in VU is comprised of several different components and systems, each wit

## Script mods (VeniceEXT)

The first and most important mod system is VeniceEXT. This is VU's custom scripting system which can be used to do everything from modify existing game mechanics to introducing entirely new gameplay experiences. VeniceEXT uses Lua as its underlying scripting language and is compatible with Lua 5.3.
The first and most important mod system is VeniceEXT. This is VU's custom scripting system which can be used to do everything from modify existing game mechanics to introducing entirely new gameplay experiences. VeniceEXT uses Lua as its underlying scripting language and is compatible with Lua 5.4 (for more information about the differences between vanilla Lua and VEXT Lua see [here](/vext)).

VeniceEXT mods are split into client, server, and shared scripts, which are executed on clients (i.e. people playing on a server), servers, and both respectively. They can also communicate with each other and coordinate to perform various functions.

@@ -2,3 +2,79 @@
title: VeniceEXT
weight: 5
---

As we briefly mentioned in the [Modding overview](/modding/) page, VeniceEXT is VU's scripting system. It's what lets you modify control game behavior, allowing you to create new experiences. If you want to know how to use VeniceEXT to create mods, refer to the [Your first mod](/modding/your-first-mod/) guide and the more in-depth [VeniceEXT guides](/vext/guides/). You can also find a full VeniceEXT API reference [here](/vext/ref/).

## Lua engine

VeniceEXT is a Lua-based scripting system using Lua 5.4. That means that (for the most part) it follows everything outlined in the [Lua 5.4 reference manual](https://www.lua.org/manual/5.4/). However, there are some differences which we'll explain here.

### Available libraries

Not all Lua standard libraries are available by default, and some may have some features disabled. More specifically, the following libraries are available:

- `table`
- `string`
- `math`
- `os`
- `coroutine`
- `package`
- `utf8`

The following library methods / properties are **not** available:

- `dofile`
- `load`
- `loadfile`
- `string.dump`
- `package.config`
- `package.cpath`
- `package.loadlib`
- `package.path`
- `package.searchpath`
- `os.execute`
- `os.exit`
- `os.getenv`
- `os.remove`
- `os.rename`
- `os.setlocale`
- `os.tmpname`

It should be noted that while the `package` library is present, the `require` call works differently from standard Lua. For more information refer to the [Splitting your code](/vext/guides/code-splitting/) guide.

### Added functionality

VeniceEXT also introduces some additional functionality in the form of additional library methods or other built-in functionality. More specifically, the following library methods have been added:

#### `string.starts(a: string, b: string): bool`

Returns `true` if string `a` starts with string `b`. Returns `false` otherwise.

#### `string.ends(a: string, b: string): bool`

Returns `true` if string `a` ends with string `b`. Returns `false` otherwise.

#### `json.encode(value: any): string | (nil, string)`

Returns a JSON encoding of the provided `value`. The following value types are supported:

- `bool`
- `int`
- `float`
- `string`
- `nil`
- [Vec2](/vext/ref/shared/type/vec2/)
- [Vec3](/vext/ref/shared/type/vec3/)
- [Vec4](/vext/ref/shared/type/vec4/)
- [Quat](/vext/ref/shared/type/quat/)
- [LinearTransform](/vext/ref/shared/type/lineartransform/)
- [QuatTransform](/vext/ref/shared/type/quattransform/)
- [AxisAlignedBox](/vext/ref/shared/type/axisalignedbox/)
- [Guid](/vext/ref/shared/type/guid/)
- A `table` of with any of the above types as values (or another `table`)

If the value could not be encoded then this function will return `nil` followed by an error message.

#### `json.decode(value: string): any | (nil, string)`

Decodes a JSON string `value` into a Lua value or table. If decoding fails, this function will return `nil` followed by an error message.
@@ -5,7 +5,7 @@ weight: 4
hideChildren: true
---

Below you can find a variety of guides for different VeniceEXT modding topics. You can also find a full [VeniceEXT API reference here](/vext/ref). For more examples and sample mods, refer to the [sample mod repository](https://github.com/EmulatorNexus/VU-Mods).
Below you can find a variety of guides for different VeniceEXT modding topics. You can also find a full [VeniceEXT API reference here](/vext/ref). For more examples and sample mods, refer to the [sample mod repository](https://github.com/EmulatorNexus/VEXT-Samples).

---

@@ -29,7 +29,7 @@ end)

Can you spot the mistake? In the code above, we store a data-based [LevelData](/vext/ref/fb/leveldata/) instance into the global variable `levelData`. This variable will keep referencing the same instance until someone modifies it. When the level unloads, the [LevelData](/vext/ref/fb/leveldata/) it points to will no longer exist and whenever something tried to touch the `levelData` variable, things will break in mysterious ways.

> Some of you may wonder why VeniceEXT itself prevent you from accessing any such invalid instances. The answer is two fold: For starters, when VeniceEXT was originally designed, the intricacies of instances were not fully understood yet. When they finally were, it was too late to make changes to how the system works. Secondly, even though there are ways to mitigate this issue in the current system, they would come with a severe performance penalty.
> Some of you may wonder why VeniceEXT itself doesn't prevent you from accessing any such invalid instances. The answer is two fold: For starters, when VeniceEXT was originally designed, the intricacies of instances were not fully understood yet. When they finally were, it was too late to make changes to how the system works. Secondly, even though there are ways to mitigate this issue in the current system, they would come with a severe performance penalty.
## Preventing dangling references

0 comments on commit 348eb84

Please sign in to comment.