- Mesaj
- 224
- Çözümler
- 4
- Beğeni
- 342
- Puan
- 784
- Ticaret Puanı
- 0
# Miles SDK 9.3 Modernizasyonu
Uzun süredir üzerinde çalıştığım Miles Sound System SDK 9.3 modernizasyonunu nihayet bugün tamamladım. Eski geliştirme yapısı günümüz araçlarına uyarlanarak hem SDK hem de MilesLib tarafı güncellendi.
* Visual Studio 2026 (MSVC v145) desteği eklendi.
* C++20 uyumluluğu sağlandı.
* Win32 (x86) ve x64 altyapısı hazırlandı.
* Debug / Release desteği eklendi.
* Static (.lib) ve Shared (.dll) derleme desteği eklendi.
* Modern CMake build sistemi oluşturuldu.
* Eski pointer ve veri tipleri 64-bit uyumlu hale getirildi.
* `stdint` tabanlı modern tip sistemi kullanıldı.
* Eski Miles API kullanımları yeni SDK yapısına uyarlandı.
* MilesLib, yeni SDK ile tamamen uyumlu hale getirildi.
* Visual Studio proje dosyaları güncellendi.
* Build sistemi ve otomasyonu geliştirildi.
* CRC oluşturma sistemi yeniden düzenlendi.
Desteklenen Build Yapıları
* Win32 Debug Static
* Win32 Release Static
* Win32 Debug Shared
* Win32 Release Shared
* x64 Debug Static
* x64 Release Static
* x64 Debug Shared
* x64 Release Shared
Toplam 8 farklı build kombinasyonu destekleniyor.
Şu an SDK tarafı başarıyla derleniyor ve MilesLib yeni yapıya uyarlanmış durumda. Bundan sonraki süreçte istemcinin diğer kütüphaneleri de aynı şekilde modernize edilerek tam x64 desteğine doğru ilerlemeyi planlıyorum.
SpeedTreeRT 1.6 ile başladığım modernizasyon yolculuğu, şimdi Miles Sound System SDK 9.3'ü de tamamlamamla devam ediyor.
Eski altyapıları günümüz standartlarına taşımak gerçekten keyifli bir süreç. Adım adım tüm bağımlılıkları modernleştirerek daha güncel, daha sürdürülebilir ve geleceğe hazır bir istemci altyapısı oluşturmayı hedefliyorum. tabii müsait oldukça
Bir diğer küçük ama önemli geliştirme de CRC sistemi tarafında oldu.
Eski yapıda Miles dosyalarının CRC ve boyut bilgileri manuel olarak takip ediliyordu. Yeni sistemde ise build çıktılarından otomatik olarak dosya boyutu ve CRC32 değerleri alınabilecek şekilde düzenlendi.
Artık farklı build kombinasyonları için:
Video da gösterdim vakiti olmayanlar için görsel
Üretilen sonuçlar doğrudan kontrol amacıyla kullanılabiliyor ve istenirse istemci tarafındaki doğrulama tablolarına kolayca aktarılabiliyor.
Kısacası build sonrası "hangi dosyanın hangi sürüm olduğunu" takip etmek ve olası uyumsuzlukları yakalamak çok daha kolay hale geldi.
Biraz da işin acı tarafına gelelim.
Miles tarafında olay sadece `MSS_VERSION "6.5c"` satırını değiştirip yeni DLL bağlamak değildi.
Yıllardır kullanılan eski API yapısı tamamen farklıydı.
Örnek olarak eski 3D ses tarafında:
```cpp
AIL_set_3D_sample_file(m_sample, lpData);
AIL_set_3D_position(m_sample, 0.0F, 0.0F, 0.0F);
AIL_auto_update_3D_position(m_sample, 0);
AIL_3D_sample_status(m_sample);
```
gibi doğrudan 3D sample mantığı üzerine kurulmuş bir sistem vardı.
Yeni Miles SDK tarafında ise bu yapı değişmiş durumda.
Artık:
```cpp
AIL_init_sample(m_sample, 0);
AIL_set_sample_file(m_sample, lpData, size);
AIL_set_sample_is_3D(m_sample, 1);
AIL_set_sample_3D_position(m_sample, 0.0F, 0.0F, 0.0F);
AIL_sample_status(m_sample);
```
şeklinde standart sample sistemi üzerinden ilerliyor.
Yani eski:
`H3DSAMPLE`
`AIL_allocate_3D_sample_handle`
`AIL_set_3D_sample_file`
gibi yapılar tek tek yeni mimariye taşındı.
Asıl zor kısım burada başladı. Çünkü eski sistemde 3D ses ayrı bir dünya iken yeni SDK'da 2D/3D ayrımı farklı ele alınıyor.
Birçok fonksiyon ismi değişti, bazıları tamamen kaldırıldı, bazıları davranış olarak değişti.
Kısacası yaptığımız şey:
"Miles SDK'yı güncellemek" değil,
20 yıllık eski bir ses API kullanımını yeni mimariye adapte etmek oldu.
Başlangıçta:
```cpp
MSS_VERSION "6.5c"
```
ile gelen eski dünya,
şimdi:
```text
Miles SDK 9.3
Visual Studio 2026
C++20
Win32/x64
```
seviyesine taşındı.
Bir de video bırakalım..
Not: Ticari lisans ve telif haklarına saygı gereği SDK dosyaları veya kaynak kodları paylaşılmamaktadır. Bu paylaşım yalnızca geliştirme sürecini ve teknik modernizasyon çalışmalarını özetlemektedir.
Uzun süredir üzerinde çalıştığım Miles Sound System SDK 9.3 modernizasyonunu nihayet bugün tamamladım. Eski geliştirme yapısı günümüz araçlarına uyarlanarak hem SDK hem de MilesLib tarafı güncellendi.
* Visual Studio 2026 (MSVC v145) desteği eklendi.
* C++20 uyumluluğu sağlandı.
* Win32 (x86) ve x64 altyapısı hazırlandı.
* Debug / Release desteği eklendi.
* Static (.lib) ve Shared (.dll) derleme desteği eklendi.
* Modern CMake build sistemi oluşturuldu.
* Eski pointer ve veri tipleri 64-bit uyumlu hale getirildi.
* `stdint` tabanlı modern tip sistemi kullanıldı.
* Eski Miles API kullanımları yeni SDK yapısına uyarlandı.
* MilesLib, yeni SDK ile tamamen uyumlu hale getirildi.
* Visual Studio proje dosyaları güncellendi.
* Build sistemi ve otomasyonu geliştirildi.
* CRC oluşturma sistemi yeniden düzenlendi.
Desteklenen Build Yapıları
* Win32 Debug Static
* Win32 Release Static
* Win32 Debug Shared
* Win32 Release Shared
* x64 Debug Static
* x64 Release Static
* x64 Debug Shared
* x64 Release Shared
Toplam 8 farklı build kombinasyonu destekleniyor.
Şu an SDK tarafı başarıyla derleniyor ve MilesLib yeni yapıya uyarlanmış durumda. Bundan sonraki süreçte istemcinin diğer kütüphaneleri de aynı şekilde modernize edilerek tam x64 desteğine doğru ilerlemeyi planlıyorum.
SpeedTreeRT 1.6 ile başladığım modernizasyon yolculuğu, şimdi Miles Sound System SDK 9.3'ü de tamamlamamla devam ediyor.

Eski altyapıları günümüz standartlarına taşımak gerçekten keyifli bir süreç. Adım adım tüm bağımlılıkları modernleştirerek daha güncel, daha sürdürülebilir ve geleceğe hazır bir istemci altyapısı oluşturmayı hedefliyorum. tabii müsait oldukça

Bir diğer küçük ama önemli geliştirme de CRC sistemi tarafında oldu.

Eski yapıda Miles dosyalarının CRC ve boyut bilgileri manuel olarak takip ediliyordu. Yeni sistemde ise build çıktılarından otomatik olarak dosya boyutu ve CRC32 değerleri alınabilecek şekilde düzenlendi.
Artık farklı build kombinasyonları için:
- Win32 / x64
- Debug / Release
- Static / Shared
Video da gösterdim vakiti olmayanlar için görsel
Üretilen sonuçlar doğrudan kontrol amacıyla kullanılabiliyor ve istenirse istemci tarafındaki doğrulama tablolarına kolayca aktarılabiliyor.
Kısacası build sonrası "hangi dosyanın hangi sürüm olduğunu" takip etmek ve olası uyumsuzlukları yakalamak çok daha kolay hale geldi.
Biraz da işin acı tarafına gelelim.

Miles tarafında olay sadece `MSS_VERSION "6.5c"` satırını değiştirip yeni DLL bağlamak değildi.
Yıllardır kullanılan eski API yapısı tamamen farklıydı.
Örnek olarak eski 3D ses tarafında:
```cpp
AIL_set_3D_sample_file(m_sample, lpData);
AIL_set_3D_position(m_sample, 0.0F, 0.0F, 0.0F);
AIL_auto_update_3D_position(m_sample, 0);
AIL_3D_sample_status(m_sample);
```
gibi doğrudan 3D sample mantığı üzerine kurulmuş bir sistem vardı.
Yeni Miles SDK tarafında ise bu yapı değişmiş durumda.
Artık:
```cpp
AIL_init_sample(m_sample, 0);
AIL_set_sample_file(m_sample, lpData, size);
AIL_set_sample_is_3D(m_sample, 1);
AIL_set_sample_3D_position(m_sample, 0.0F, 0.0F, 0.0F);
AIL_sample_status(m_sample);
```
şeklinde standart sample sistemi üzerinden ilerliyor.
Yani eski:
`H3DSAMPLE`
`AIL_allocate_3D_sample_handle`
`AIL_set_3D_sample_file`
gibi yapılar tek tek yeni mimariye taşındı.
Asıl zor kısım burada başladı. Çünkü eski sistemde 3D ses ayrı bir dünya iken yeni SDK'da 2D/3D ayrımı farklı ele alınıyor.
Birçok fonksiyon ismi değişti, bazıları tamamen kaldırıldı, bazıları davranış olarak değişti.
Kısacası yaptığımız şey:
"Miles SDK'yı güncellemek" değil,
20 yıllık eski bir ses API kullanımını yeni mimariye adapte etmek oldu.

Başlangıçta:
```cpp
MSS_VERSION "6.5c"
```
ile gelen eski dünya,
şimdi:
```text
Miles SDK 9.3
Visual Studio 2026
C++20
Win32/x64
```
seviyesine taşındı.
Bir de video bırakalım..
Not: Ticari lisans ve telif haklarına saygı gereği SDK dosyaları veya kaynak kodları paylaşılmamaktadır. Bu paylaşım yalnızca geliştirme sürecini ve teknik modernizasyon çalışmalarını özetlemektedir.
Son düzenleme:
Tabi bu neticede "kötü" anlamına gelmiyor, sadece benim gibi takıklar için modern yapılara geçiş bir tür hastalık gibi. Bu sebeple bence milesi tamamen çöpe atıp fmod veya xaudio2 gibi yapılara geçmek daha mantıklı olur. 



