Initial commit: ROW Client source code

Game client codebase including:
- CharacterActionControl: Character and creature management
- GlobalScript: Network, items, skills, quests, utilities
- RYLClient: Main client application with GUI and event handlers
- Engine: 3D rendering engine (RYLGL)
- MemoryManager: Custom memory allocation
- Library: Third-party dependencies (DirectX, boost, etc.)
- Tools: Development utilities

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-29 16:24:34 +09:00
commit e067522598
5135 changed files with 1745744 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
Type=Exe
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINNT\System32\stdole2.tlb#OLE Automation
Reference=*\G{E1211242-8E94-11D1-8808-00C04FC2C603}#1.0#0#C:\WINNT\system32\dx8vb.dll#DirectX 8 for Visual Basic Type Library
Form=vertexblend.frm
Module=D3DUtil; ..\..\common\D3DUtil.bas
Class=CD3DMesh; ..\..\common\D3DMesh.cls
Class=CD3DFrame; ..\..\common\D3DFrame.cls
Class=CD3DAnimation; ..\..\common\D3DAnimation.cls
Module=MediaDir; ..\..\Common\media.bas
Form=..\..\common\SelectDevice.frm
Module=D3DInit; ..\..\common\D3DInit.bas
Startup="Form1"
ExeName32="vb_VertexBlend.exe"
Command32=""
Name="Project1"
HelpContextID="0"
CompatibleMode="0"
MajorVer=1
MinorVer=0
RevisionVer=0
AutoIncrementVer=0
ServerSupportFiles=0
VersionCompanyName="Microsoft"
CompilationType=0
OptimizationType=0
FavorPentiumPro(tm)=0
CodeViewDebugInfo=0
NoAliasing=0
BoundsCheck=0
OverflowCheck=0
FlPointCheck=0
FDIVCheck=0
UnroundedFP=0
StartMode=0
Unattended=0
Retained=0
ThreadPerObject=0
MaxNumberOfThreads=1
[MS Transaction Server]
AutoRefresh=1

View File

@@ -0,0 +1,53 @@
//-----------------------------------------------------------------------------
// Name: VertexBlend Direct3D Sample
//
// Copyright (C) 1999-2001 Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
Description
===========
The VertexBlend sample demonstrates a technique called vertex blending (also
known as surface skinning). It displays a file-based object which is made to
bend is various spots.
Surface skinning is an impressive technique used for effects like smooth
joints and bulging muscles in character animations.
Note that not all cards support all features for vertex blending. For more
information on vertex blending, refer to the DirectX SDK documentation.
Path
====
Source: DXSDK\Samples\Multimedia\VBSamples\Direct3D\VertexBlend
Executable: DXSDK\Samples\Multimedia\VBSamples\Direct3D\Bin
User's Guide
============
The following keys are implemented.
<F2> Prompts user to select a new rendering device or display mode
<Alt+Enter> Toggles between fullscreen and windowed modes
<Esc> Exits the app.
Programming Notes
=================
Vertex blending requires each vertex to have an associated blend weight.
Multiple world transforms are set up using SetTransformState() and the
blend weights determine how much contribution each world matrix has when
positioning each vertex.
In this sample, a mesh is loaded using the common helper code. What is
important is how a custom vertex and a custom FVF is declared and used
to build the mesh (see the SetFVF() call for the mesh object). Without
using the mesh helper code, the technique is the same: just create a
vertex buffer full of vertices that have a blend weight, and use the
appropriate FVF.
This sample makes use of common DirectX code (consisting of helper functions,
etc.) that is shared with other samples on the DirectX SDK. All common
classes and modules can be found in the following directory:
DXSDK\Samples\Multimedia\VBSamples\Common

View File

@@ -0,0 +1,418 @@
VERSION 5.00
Begin VB.Form Form1
Caption = "Vertex Blend"
ClientHeight = 4485
ClientLeft = 60
ClientTop = 345
ClientWidth = 5640
Icon = "vertexblend.frx":0000
LinkTopic = "Form1"
ScaleHeight = 299
ScaleMode = 3 'Pixel
ScaleWidth = 376
StartUpPosition = 3 'Windows Default
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'-----------------------------------------------------------------------------
' File: VertexBlend.frm
'
' Desc: Example code showing how to do a skinning effect, using the vertex
' blending feature of Direct3D. Normally, Direct3D transforms each
' vertex through the world matrix. The vertex blending feature,
' however, uses mulitple world matrices and a per-vertex blend factor
' to transform each vertex.
'
' Copyright (C) 1999-2001 Microsoft Corporation. All rights reserved.
'-----------------------------------------------------------------------------
Option Explicit
Const D3DVBF_DISABLE = 0 ' Disable vertex blending
Const D3DVBF_1WEIGHTS = 1 ' 2 matrix blending
Const D3DVBF_2WEIGHTS = 2 ' 3 matrix blending
Const D3DVBF_3WEIGHTS = 3 ' 4 matrix blending
Const D3DVBF_0WEIGHTS = 256 ' one matrix is used with weight 1.0
'-----------------------------------------------------------------------------
' Name: struct D3DBLENDVERTEX
' Desc: Custom vertex which includes a blending factor
'-----------------------------------------------------------------------------
Private Type D3DBLENDVERTEX
v As D3DVECTOR
blend As Single
n As D3DVECTOR
tu As Single
tv As Single
End Type
Const D3DFVF_BLENDVERTEX = (D3DFVF_XYZB1 Or D3DFVF_NORMAL Or D3DFVF_TEX1)
Dim m_Object As CD3DMesh
Dim m_matUpperArm As D3DMATRIX
Dim m_matLowerArm As D3DMATRIX
Dim m_mediadir As String
Dim g_ftime As Single
Dim m_bInit As Boolean ' Indicates that d3d has been initialized
Dim m_bMinimized As Boolean ' Indicates that display window is minimized
'-----------------------------------------------------------------------------
' Name: Form_Load()
' Desc:
'-----------------------------------------------------------------------------
Private Sub Form_Load()
' Show the form
Me.Show
DoEvents
Me.Caption = "VertexBlend: Surface Skinning Example"
' Initialize D3D
' Note: D3DUtil_Init will attempt to use D3D Hardware acceleartion.
' If it is not available it attempt to use the Software Reference Rasterizer.
' If all fail it will display a message box indicating so.
'
m_bInit = D3DUtil_Init(Me.hwnd, True, 0, 0, D3DDEVTYPE_HAL, Nothing)
If Not (m_bInit) Then End
' Find and set the path to our media
m_mediadir = FindMediaDir("mslogo.x")
D3DUtil_SetMediaPath m_mediadir
' Create new D3D mesh objects and loads content from disk
InitDeviceObjects
' Sets the state for those objects and the current D3D device
RestoreDeviceObjects
' Start our timer
DXUtil_Timer TIMER_start
' Run the simulation forever
' See Form_Keydown for exit processing
Do While True
' Increment the simulation
FrameMove
' Render one image of the simulation
If Render Then
' Present the image to the screen
D3DUtil_PresentAll g_focushwnd
End If
' Allow for events to get processed
DoEvents
Loop
End Sub
'-----------------------------------------------------------------------------
' Name: Form_KeyDown()
' Desc: Process key messages for exit and change device
'-----------------------------------------------------------------------------
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyEscape
Unload Me
Case vbKeyF2
' Pause the timer
DXUtil_Timer TIMER_STOP
' Bring up the device selection dialog
' we pass in the form so the selection process
' can make calls into InitDeviceObjects
' and RestoreDeviceObjects
frmSelectDevice.SelectDevice Me
' Restart the timer
DXUtil_Timer TIMER_start
Case vbKeyReturn
' Check for Alt-Enter if not pressed exit
If Shift <> 4 Then Exit Sub
' If we are windowed go fullscreen
' If we are fullscreen returned to windowed
If g_d3dpp.Windowed Then
D3DUtil_ResetFullscreen
Else
D3DUtil_ResetWindowed
End If
' Call Restore after ever mode change
' because calling reset looses state that needs to
' be reinitialized
RestoreDeviceObjects
End Select
End Sub
'-----------------------------------------------------------------------------
' Name: Form_Resize()
' Desc: hadle resizing of the D3D backbuffer
'-----------------------------------------------------------------------------
Private Sub Form_Resize()
' If D3D is not initialized then exit
If Not m_bInit Then Exit Sub
' If we are in a minimized state stop the timer and exit
If Me.WindowState = vbMinimized Then
DXUtil_Timer TIMER_STOP
m_bMinimized = True
Exit Sub
' If we just went from a minimized state to maximized
' restart the timer
Else
If m_bMinimized = True Then
DXUtil_Timer TIMER_start
m_bMinimized = False
End If
End If
' Dont let the window get too small
If Me.ScaleWidth < 10 Then
Me.width = Screen.TwipsPerPixelX * 10
Exit Sub
End If
If Me.ScaleHeight < 10 Then
Me.height = Screen.TwipsPerPixelY * 10
Exit Sub
End If
'reset and resize our D3D backbuffer to the size of the window
D3DUtil_ResizeWindowed Me.hwnd
'All state get losts after a reset so we need to reinitialze it here
g_lWindowWidth = Me.ScaleWidth
g_lWindowHeight = Me.ScaleHeight
RestoreDeviceObjects
End Sub
'-----------------------------------------------------------------------------
' Name: Form_Unload()
' Desc:
'-----------------------------------------------------------------------------
Private Sub Form_Unload(Cancel As Integer)
DeleteDeviceObjects
End
End Sub
'-----------------------------------------------------------------------------
' Name: FrameMove()
' Desc: Called once per frame, the call is the entry point for animating
' the scene.
'-----------------------------------------------------------------------------
Sub FrameMove()
g_ftime = DXUtil_Timer(TIMER_GETAPPTIME)
' Set the vertex blending matrices for this frame
D3DXMatrixIdentity m_matUpperArm
Dim vAxis As D3DVECTOR
vAxis = vec3(2 + Sin(g_ftime * 3.1), 2 + Sin(g_ftime * 3.3), Sin(g_ftime * 3.5))
D3DXMatrixRotationAxis m_matLowerArm, vAxis, Sin(3 * g_ftime)
End Sub
'-----------------------------------------------------------------------------
' Name: Render()
' Desc: Called once per frame, the call is the entry point for 3d
' rendering. This function sets up render states, clears the
' viewport, and renders the scene.
'-----------------------------------------------------------------------------
Function Render() As Boolean
Dim hr As Long
Render = False
'See what state the device is in.
hr = g_dev.TestCooperativeLevel
If hr = D3DERR_DEVICENOTRESET Then
g_dev.Reset g_d3dpp
RestoreDeviceObjects
End If
'dont bother rendering if we are not ready yet
If hr <> 0 Then Exit Function
Render = True
' Clear the backbuffer
D3DUtil_ClearAll &HFF&
With g_dev
.BeginScene
' Enable vertex blending
.SetRenderState D3DRS_VERTEXBLEND, D3DVBF_1WEIGHTS
.SetTransform D3DTS_WORLD, m_matUpperArm
.SetTransform D3DTS_WORLD1, m_matLowerArm
' Display the object
m_Object.Render g_dev
' End the scene.
.EndScene
End With
End Function
'-----------------------------------------------------------------------------
' Name: InitDeviceObjects()
' Desc: Initialize scene objects.
'-----------------------------------------------------------------------------
Function InitDeviceObjects() As Boolean
Dim b As Boolean
Set m_Object = New CD3DMesh
b = m_Object.InitFromFile(g_dev, m_mediadir + "mslogo.x")
If Not b Then
MsgBox "media not found"
End
End If
' Set a custom FVF for the mesh
m_Object.SetFVF g_dev, D3DFVF_BLENDVERTEX
Dim VertB As Direct3DVertexBuffer8
Dim Vertices() As D3DBLENDVERTEX
Dim NumVertices As Long
Dim MinX As Single
Dim MaxX As Single
Dim a As Single
Dim i As Long
NumVertices = m_Object.mesh.GetNumVertices()
Set VertB = m_Object.mesh.GetVertexBuffer()
MinX = 10000000000#
MaxX = -10000000000#
ReDim Vertices(NumVertices)
'copy data into our own array
D3DVertexBuffer8GetData VertB, 0, NumVertices * Len(Vertices(0)), 0, Vertices(0)
' Calculate the min/max z values for all the vertices
For i = 0 To NumVertices - 1
If Vertices(i).v.x < MinX Then MinX = Vertices(i).v.x
If Vertices(i).v.x > MaxX Then MaxX = Vertices(i).v.x
Next
' Set the blend factors for the vertices
For i = 0 To NumVertices - 1
a = (Vertices(i).v.x - MinX) / (MaxX - MinX)
Vertices(i).blend = 1 - Sin(a * g_pi * 1)
Next
D3DVertexBuffer8SetData VertB, 0, NumVertices * Len(Vertices(0)), 0, Vertices(0)
Set VertB = Nothing
InitDeviceObjects = True
End Function
'-----------------------------------------------------------------------------
' Name: RestoreDeviceObjects()
' Desc: Restore device-memory objects and state after a device is created or
' resized.
'-----------------------------------------------------------------------------
Sub RestoreDeviceObjects()
' Restore mesh's local memory objects
m_Object.RestoreDeviceObjects g_dev
' Set miscellaneous render states
With g_dev
.SetRenderState D3DRS_ZENABLE, 1 'TRUE
.SetRenderState D3DRS_AMBIENT, &H444444
' Set the projection matrix
Dim matProj As D3DMATRIX
D3DXMatrixPerspectiveFovLH matProj, g_pi / 4, Me.ScaleHeight / Me.ScaleWidth, 1#, 10000#
.SetTransform D3DTS_PROJECTION, matProj
' Set the app view matrix for normal viewing
Dim vEyePt As D3DVECTOR, vLookatPt As D3DVECTOR, vUpVec As D3DVECTOR
Dim matView As D3DMATRIX
vEyePt = vec3(0#, -5#, -10#)
vLookatPt = vec3(0#, 0#, 0#)
vUpVec = vec3(0#, 1#, 0#)
D3DXMatrixLookAtLH matView, vEyePt, vLookatPt, vUpVec
.SetTransform D3DTS_VIEW, matView
' Create a directional light
Dim light As D3DLIGHT8
D3DUtil_InitLight light, D3DLIGHT_DIRECTIONAL, 1, -1, 1
.SetLight 1, light
.LightEnable 1, 1 'True
.SetRenderState D3DRS_LIGHTING, 1 'TRUE
End With
End Sub
'-----------------------------------------------------------------------------
' Name: InvalidateDeviceObjects()
' Desc: Called when the device-dependant objects are about to be lost.
'-----------------------------------------------------------------------------
Sub InvalidateDeviceObjects()
m_Object.InvalidateDeviceObjects
End Sub
'-----------------------------------------------------------------------------
' Name: DeleteDeviceObjects()
' Desc: Called when the app is exitting, or the device is being changed,
' this function deletes any device dependant objects.
'-----------------------------------------------------------------------------
Sub DeleteDeviceObjects()
m_Object.Destroy
Set m_Object = Nothing
m_bInit = False
End Sub