Skip to content

Commit

Permalink
Update more pages
Browse files Browse the repository at this point in the history
  • Loading branch information
avafloww committed Jun 26, 2023
1 parent c1d3529 commit d2bf995
Show file tree
Hide file tree
Showing 15 changed files with 55 additions and 133 deletions.
2 changes: 1 addition & 1 deletion _config.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
theme: jekyll-theme-cayman
theme: jekyll-theme-cayman
41 changes: 41 additions & 0 deletions _layouts/redirect.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<!DOCTYPE html>
<html lang="{{ site.lang | default: "en-US" }}">
<head>

{% if site.google_analytics %}
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics }}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '{{ site.google_analytics }}');
</script>
{% endif %}
<meta charset="UTF-8">

{% seo %}
<link rel="preconnect" href="https://fonts.gstatic.com">
<link rel="preload" href="https://fonts.googleapis.com/css?family=Open+Sans:400,700&display=swap" as="style" type="text/css" crossorigin>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#157878">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<link rel="stylesheet" href="{{ '/assets/css/style.css?v=' | append: site.github.build_revision | relative_url }}">

<script data-goatcounter="https://goatcorp.goatcounter.com/count"
async src="//gc.zgo.at/count.js"></script>

<meta http-equiv="refresh" content="1; url={{ page.redirect }}" />
<link rel="canonical" href="{{ page.redirect }}"/>
<script type="text/javascript">
window.location.href = "{{ page.redirect }}"
</script>
</head>
<body>

<main id="content" class="main-content" role="main">
This page has moved.
<br />
<a href="{{ page.redirect }}">If you are not redirected automatically, please click here</a>.
</main>
</body>
</html>
78 changes: 4 additions & 74 deletions debug.md
Original file line number Diff line number Diff line change
@@ -1,74 +1,4 @@
# Using Visual Studio debugger to figure out game crash reason

## Installing Visual Studio

First of all, you need to install Visual Studio. In this guide I will be using Visual Studio 2022, however 2019 will work as well.

Download it here: <https://visualstudio.microsoft.com/vs/preview/#download-preview>

Select "Visual Studio Community" and run downloaded executable. Wait until visual studio installer gets installed. Then go to "Individual components", select "Just-In-Time debugger" and press "Install" button. You only need this component, however, if you wish, you may install any additional ones.

![image_451](images/debug/1_install_vs.png)

If it gives you any confirmations, just press "Continue". Now wait until it will install. Reboot if it will ask you to do so.

## Configuring Visual Studio

Before you will start debugging, you will need to perform some configuration. Launch Visual Studio and it will prompt you to log in, you may do so or skip.

Select "Continue without code" on starting screen.

![image_452](images/debug/2_startup_window.png)

Navigate to "Debug - Options - Debugging - General" and disable "Enable Just My Code" option. Don't forget to press "Ok" button.

![image_453](images/debug/3_config.png)

## Configuring Dalamud

Before you will be able to attach a debugger, you will need to disable anti-debug protection. Type `/xldev` in game, open "Dalamud" menu and select "Enable Anti-debug" menu item if it's unchecked.

![image_454](images/debug/4_dalamud_config.png)

## Attaching a debugger

Navigate to "Debug - Attach to process". In "Attach to" section click on "Select" button, check "Debug these code types" checkbox, and check "Managed (.NET core, .NET 5+)" and "Native" checkboxes. Press "Ok" button and then find "ffxiv_dx11.exe" process in process list. Select it and click "Attach" button.

![image](images/debug/5_attach_debugger.png)

Debugging session should begin now. Navigate to "Debug - Windows - Exception settings" and uncheck "Common Language Runtime Exceptions". We don't need them.

![image](images/debug/6_exception_settings.png)

## Crash

When a crash occurs, you will see it in Visual Studio. It may prompt you to load source or PDB file for crashed module, in that case just close that window.

You will see something like this:

![image_456](images/debug/7_crash.png)

You can close exception alert modal window. We don't need it. Look on a Call stack. If you don't see Call stack window, navigate to "Debug - Windows - Call stack". You can see crash happened on a Test plugin function call. Usually there will be some plugin mentioned there, but not always.

Generally, try to disable that plugin and reproduce the crash again. If you can confirm that the crash stopped happening, please report the crash to a plugin developer.

## Reporting a problem

You will need to include following things into your report:

- Call stack
- Right click any call stack entry, select "Select all", right click again, "Copy" (or Ctrl+A - Ctrl+C).
- Exception
- Navigate to "Debug - Windows - Output", find last error and copy it.
- It will look [like this](images/debug/8_output.png).
- Base address
- Please include process base address. Navigate to "Debug - Windows - Modules", find `ffxiv_dx11.exe`, right click on it, select "Copy". The information copied will contain process base address. **Please note that you must copy base address from the same game session, base address changes every game restart**.
- It will look [like this](images/debug/9_base_address.png).
- Dalamud log

## Exiting debugger

To detach a debugger, navigate to "Debug - Stop debugging".

[Return to the top](#Installing Visual Studio)\
<a href="{{ site.github.baseurl }}/">Return to the main FAQ</a>
---
redirect: https://dalamud.dev/faq/debug
layout: redirect
---
9 changes: 4 additions & 5 deletions development.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
# Development FAQ

The Development FAQ has been moved!

The latest information can be found on [Dalamud.dev](https://dalamud.dev/faq).
---
redirect: https://dalamud.dev/faq
layout: redirect
---
Binary file removed images/debug/1_install_vs.png
Binary file not shown.
Binary file removed images/debug/2_startup_window.png
Binary file not shown.
Binary file removed images/debug/3_config.png
Binary file not shown.
Binary file removed images/debug/4_dalamud_config.png
Binary file not shown.
Binary file removed images/debug/5_attach_debugger.png
Binary file not shown.
Binary file removed images/debug/6_exception_settings.png
Binary file not shown.
Binary file removed images/debug/7_crash.png
Binary file not shown.
Binary file removed images/debug/8_output.png
Binary file not shown.
Binary file removed images/debug/9_base_address.png
Binary file not shown.
2 changes: 1 addition & 1 deletion index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Please select a category from below: <br> <br>

<a href="{{ site.github.baseurl }}/xl_troubleshooting" class="btnm">Help for XIVLauncher</a>
<a href="{{ site.github.baseurl }}/dalamud_troubleshooting" class="btnm">Help for plugins</a>
<a href="{{ site.github.baseurl }}/development" class="btnm">Help for plugin developers</a>
<a href="https://dalamud.dev" class="btnm">Help for plugin developers</a>
<a href="{{ site.github.baseurl }}/mobile_otp" class="btnm">Authenticator App Guide</a>
<a href="{{ site.github.baseurl }}/steamdeck" class="btnm">Steam Deck Setup Guide</a>

Expand Down
56 changes: 4 additions & 52 deletions plugin_submission.md
Original file line number Diff line number Diff line change
@@ -1,52 +1,4 @@
# The plugin approval process
This article describes the process that decides which plugins are merged into the official repository, and how we make sure that what goes in is safe for you and safe for us. It's important to know that none of what is described in this post applies to custom repositories - we can only do this for developers that officially submit their plugin.

## The technical details
To begin with, we need to explain how our submission process for plugins in the official repository works. This is a little simplified, but it's the foundation upon which the approval process is built on.

* All plugins in the official repository are open-source, and no closed-source plugins are accepted (aside from one legacy exception). This means that their code can be inspected by anyone, should they wish to do so.
* Plugin developers submit their plugin by submitting a "commit hash", which is a cryptographical hash that points to a **specific version of their source code**. Changing their code after submission will result in a new hash, which will require them to re-submit and have their changes reviewed again. [^1]
* A cloud build system then downloads that source code, builds the plugin, and outputs a "diff", which is a **list of all changes that were made** to the plugin. The build system has no direct internet access, so plugin developers can't download additional code while the plugin is being built.
* This diff is then inspected by members of the [plugin approval team](#the-plugin-approval-team).

All of this, combined, allows us to ensure that the code that runs on users' PCs is the code that we approved, and that no code is run on users' hardware before we approve it. This system was built to be convenient for both developers and reviewers, and should impose very little burden - developers just have to use a few specific variables in their project configuration.

## The Plugin Approval Team
The plugin approval team is a subjectively chosen group of 6 volunteers that are technical, security conscious, are themselves plugin developers, and share consensus on how the Dalamud plugin ecosystem should work and what plugins should and shouldn't do.

They approve new plugin submissions, and review proposed changes to existing plugins.

## New submissions
When a plugin is newly submitted, the team checks that it conforms to a set of [guidelines](development.md#q-what-am-i-allowed-to-do-in-my-plugin) and [technical criteria](https://github.com/goatcorp/DalamudPluginsD17#approval-criteria). The team then votes on each newly submitted plugin - if a plugin clears 4 yes votes, it is approved and will appear in the repo. Every team member can veto a plugin, blocking it from being merged until the concern is resolved. This hasn't happened yet.

The most important guidelines include:

- that the plugin does not interact with the game servers in a way that is:
- automatic, as in polling data or making requests without direct interaction from the user
- outside of specification, as in allowing the player to do submit things to the server that would not be possible by normal means
- that the plugin does not augment, alter, or interfere with combat, unless it only provides information about your own party or alliance members that is otherwise available, but represents said information differently.
- Note that there are plugins on the repository that do not abide by this rule, but they have been grandfathered. We think that removing them would be stupid, but a lot of these plugins were accepted very early into Dalamud's life and we've learned a lot since then. They probably wouldn't be accepted if they were submitted nowadays.
- that the plugin does not interfere with Square Enix's monetary interests (i.e. granting access to Mog Station items)

These guidelines exist because we want to improve the experience Square Enix provides - not harm it or any other player playing the game. We think that they allow for a lot of freedom for plugin developers, while encouraging them to stay true to that intent.

Technical criteria include a thorough code review, that the plugin works and that it does not upload any personal data. All of this can take a while, which is why it's not uncommon for a new plugin to sit in the queue for more than a week - all of the team members are doing this in their free time, so they might not get to it before then.

We also require all new plugins to go through the plugin testing track beforehand, which distributes the plugin to testing users before it goes out to everyone using Dalamud. This helps tracking down potential issues and bugs.

## Updates to plugins
Updates to plugins only need to be approved by a single team member, which helps keep the queue size small. The changed code is reviewed carefully, and the updated plugin is then built and distributed.

<img width="360" alt="Discord_vSFHENlBBd" src="https://user-images.githubusercontent.com/16760685/217103831-de5c1af3-7244-438e-8e8e-7408d2545814.png">

<em>What a plugin approval team member sees when they are being called in to review a change to a plugin.</em>

## Caveat emptor
While this is all fine - and it has been working pretty well for us, without any incidents - all of this work is done by volunteers, and they might miss or overlook things. We can't and don't want to give you a 100% guarantee that things will always be fine, but we believe that we can give you a pretty good assurance that they will be.

It's up to you to decide who you trust!

## In closing
We hope that this helps clarify how plugins land in the official Dalamud plugin listing. If you have any questions or think that something here could be clarified, feel free to reach out.

[^1]: Technically, this is still possible, but you would need NSA-grade datacenters and a lot of time (at the moment, probably hundreds of years) to break the hash algorithm Git uses.
---
redirect: https://dalamud.dev/plugin-development/plugin-submission
layout: redirect
---

0 comments on commit d2bf995

Please sign in to comment.