GodotSteam集成指南:从开源引擎到Steam平台发布全流程

news2026/5/5 5:06:52
1. 项目概述当开源游戏引擎遇见全球最大PC游戏平台如果你是一位独立游戏开发者或者对游戏开发感兴趣正在使用或考虑使用Godot这款轻量级、开源的游戏引擎那么你迟早会面临一个现实问题如何将你的游戏发布到Steam上这不是一个简单的“导出”按钮就能解决的。Steam平台提供了一套庞大而复杂的API应用程序接口用于处理成就、云存档、排行榜、多人联机、微交易Steamworks等核心功能。而Godot引擎本身并未内置对这些API的原生支持。这就是“GodotSteam”项目诞生的背景和核心价值所在。简单来说GodotSteam是一个为Godot游戏引擎量身打造的、功能完整的Steamworks SDK集成模块。它充当了Godot游戏逻辑与Steam平台后端服务之间的“翻译官”和“桥梁”。没有它你的Godot游戏在Steam上就只是一个普通的可执行文件无法解锁任何平台特有的社交、社区和商业化能力。这个项目在GitHub上由社区驱动维护旨在让开发者能够以相对简单、直接的方式在Godot项目中调用Steam的几乎所有服务。我最初接触这个模块是在几年前的一个小型合作项目里当时团队决定用Godot快速原型一款带有联机功能的游戏并计划上线Steam。我们评估了各种方案最终选择了GodotSteam。从集成、调试到最终上线整个过程就像是在一片既有现成宝藏Steam功能又布满技术沟壑集成复杂度的地图上由这个模块为我们绘制了一份清晰的导航图。它不仅提供了功能更重要的是它遵循了Godot的GDScript使用习惯将C的Steamworks API封装成了更友好、更易用的形式。2. 核心架构与集成模式解析GodotSteam并非一个单一的黑盒插件而是一个结构清晰、支持多平台和多种集成方式的模块。理解它的架构是成功使用它的第一步。2.1 模块化设计与平台适配GodotSteam的核心是一个用C编写的Godot引擎模块Module。这意味着它不是通过Godot的Asset Library安装的普通插件Addon而是需要编译进Godot引擎本体或者使用预编译好的引擎定制版本。这种设计带来了性能上的优势直接调用无中间层损耗和功能上的完整性可以访问更底层的引擎接口但也增加了初始集成的复杂度。项目主要支持两大平台Windows和Linux。对于macOS由于Steamworks SDK对macOS的支持历史以及Apple芯片架构的变迁支持情况相对复杂且可能滞后社区通常会有相关的讨论和实验性分支。在架构上它同时支持x86_6464位和x8632位版本这对于需要覆盖更老硬件用户的游戏来说很重要。除了编译为引擎模块GodotSteam也提供了GDExtension的支持方式。GDExtension是Godot 4.0引入的、更现代化和灵活的本地代码扩展系统。它允许在不重新编译整个引擎的情况下加载预编译的本地库。对于使用Godot 4的开发者来说GDExtension是更推荐的方式因为它简化了部署和更新流程。你需要根据自己使用的Godot版本3.x 或 4.x和偏好来选择集成路径。2.2 两种核心集成路径详解路径一使用预编译的定制版Godot引擎这是对新手最友好的方式。GodotSteam的维护者和社区成员会定期发布已经集成好Steamworks模块的Godot引擎可执行文件。你只需要下载对应你操作系统Windows/Linux和Godot版本如3.5, 3.6, 4.0, 4.1等的定制引擎用它来打开和导出你的项目即可。优点开箱即用无需配置编译环境省时省力。缺点引擎版本可能不是最新的稳定版你依赖于维护者的更新节奏如果遇到深层次bug自行调试和修复的难度较大。操作建议对于快速启动项目、原型验证或小型独立游戏这是首选。在项目初期就使用定制引擎进行开发可以避免后期切换引擎带来的兼容性问题。路径二自行编译Godot引擎与GodotSteam模块这是更高级、更灵活的方式。你需要从Godot官方GitHub仓库拉取源代码并将GodotSteam的模块代码放置到正确的目录通常是modules/目录下然后使用SCons或新的GDExtension构建系统进行编译。优点完全控制引擎和模块的版本可以应用自定义补丁深度调试并且可以确保与最新Godot特性同步。缺点需要一定的C编译环境和命令行操作知识过程耗时且可能遇到平台特定的编译错误。操作要点环境准备确保安装Python、SCons、合适的C编译器Windows上常用Visual Studio Build Tools或MinGWLinux上为gcc/clang。代码放置将GodotSteam仓库克隆或下载到Godot源码的modules/godotsteam/目录下。编译配置在编译命令中激活该模块。例如一个基础的SCons命令可能是scons platformwindows targetrelease_debug toolsyes modulegodotsteam。耐心排错编译过程中最常见的错误是依赖缺失或路径问题。仔细阅读Godot和GodotSteam的官方编译指南至关重要。注意无论选择哪种路径你都必须从Steam开发者门户Steamworks下载官方的Steamworks SDK并将其中的redistributable_bin目录下的动态链接库如steam_api.dll或libsteam_api.so放置到你的游戏导出目录中。这是Steam DRM和API调用的基础GodotSteam模块本身不包含这些专有库。3. 核心功能实现与GDScript实战集成好引擎只是第一步接下来是在游戏代码中实际调用Steam的功能。GodotSteam通过一个名为Steam的单例Singleton对象暴露所有接口这在GDScript中使用起来非常直观。3.1 初始化一切的开始在任何Steam功能调用之前必须成功初始化Steam API。这通常在游戏主场景的_ready()函数中完成。extends Node func _ready(): # 首先尝试初始化Steam var initialize_result Steam.steamInit() if initialize_result ! 1: # 初始化失败 print(Steam初始化失败错误码: , initialize_result) # 处理失败情况可能是游戏未通过Steam客户端启动或者SDK文件缺失。 # 在开发时你可以选择继续运行但禁用Steam功能在上线版本中可能需要提示用户通过Steam启动游戏。 get_tree().quit() # 或者设置一个标志位禁用所有Steam相关功能 return print(Steam初始化成功) print(当前Steam用户名称: , Steam.getPersonaName()) print(Steam用户ID: , Steam.getSteamID())关键点解析steamInit()这是最关键的调用。它返回一个整数1代表成功其他值代表失败。失败原因可能是游戏未在Steam客户端环境中运行直接双击exe启动或者steam_api.dll/so文件丢失、版本不匹配。开发期调试为了方便在编辑器内直接测试而非每次都通过Steam启动GodotSteam通常支持使用一个steam_appid.txt文件。你需要在项目根目录或可执行文件旁创建一个文本文件里面只写入你的Steam App ID一个数字这样API就会认为它运行在Steam环境中。切记不要将此文件打包到发行版本中上线检查在发行的游戏中初始化失败通常意味着用户没有通过Steam启动。你应该有友好的错误提示引导用户从Steam库中启动游戏。3.2 成就系统Achievements的实现成就系统是提升玩家参与度和游戏寿命的经典功能。GodotSteam提供了简洁的接口。# 假设在某个脚本中当玩家击败Boss时触发 func on_boss_defeated(boss_name: String): # 触发一个成就 var achievement_api_name ACH_DEFEAT_FIRST_BOSS # 这是在Steamworks后台配置的API名称 var success Steam.setAchievement(achievement_api_name) if success: print(成就【首次击败Boss】已解锁) # Steam客户端会自动弹出成就通知 else: print(解锁成就失败。) # 你也可以触发带统计数据的成就例如累计击败10个Boss # 首先获取当前击败计数 var current_kills Steam.getStatInt(total_boss_kills) current_kills 1 Steam.setStatInt(total_boss_kills, current_kills) # 检查累计成就 if current_kills 10: Steam.setAchievement(ACH_BOSS_SLAYER) # 重要更改统计数据或成就后必须调用此函数将数据上传至Steam服务器 Steam.storeStats()实操心得与避坑指南API名称 vs 显示名称在代码中引用的是API Name如ACH_DEFEAT_FIRST_BOSS而不是你在Steamworks后台设置的面向玩家的Display Name如“屠龙勇士”。务必在后台核对清楚。storeStats()的调用时机setAchievement()和setStat...()函数只修改本地内存中的数据。必须调用Steam.storeStats()才会将数据持久化到Steam服务器。一个常见的做法是在游戏的自然断点如关卡结束、游戏保存、退出时集中调用一次避免过于频繁的网络请求。但请注意如果玩家在未调用storeStats()前游戏崩溃本次游戏的成就进度可能会丢失。成就重置开发期在开发测试阶段你可能需要反复触发和重置成就。Steamworks为开发版本提供了Steam.clearAchievement()和Steam.resetAllStats()函数。这些函数在游戏发布后对玩家不可用所以不用担心玩家滥用。进度型成就Progress Stat对于“完成50%”这类进度显示Steam有专门的“进度型成就”功能需要在后台配置并调用Steam.indicateAchievementProgress()。这比单纯用统计数字更直观。3.3 云存档Cloud Saves的集成云存档让玩家的游戏进度可以在不同电脑间同步。GodotSteam的云存档接口是文件操作导向的。# 保存游戏到云存档 func save_game_to_cloud(save_data: Dictionary, slot: int 0): # 1. 将游戏数据转换为字节流这里用JSON示例 var json_string JSON.stringify(save_data) var file_buffer json_string.to_utf8_buffer() # 2. 写入文件Steam会在本地和云端同步管理这个文件 var file_name save_slot_%d.sav % slot # 注意file_write的第二个参数是数据PoolByteArray第三个参数是数据长度 var bytes_written Steam.fileWrite(file_name, file_buffer, len(file_buffer)) if bytes_written 0: print(游戏存档已写入云端文件名%s大小%d 字节。 % [file_name, bytes_written]) else: print(云存档写入失败。可能磁盘空间不足或Steam云服务不可用。) # 从云存档加载游戏 func load_game_from_cloud(slot: int 0): var file_name save_slot_%d.sav % slot # 1. 检查文件是否存在 if Steam.fileExists(file_name): # 2. 获取文件大小并读取 var file_size Steam.getFileSize(file_name) var file_buffer Steam.fileRead(file_name, file_size) # 返回一个PoolByteArray if file_buffer ! null and file_buffer.size() 0: # 3. 将字节流转换回游戏数据 var json_string file_buffer.get_string_from_utf8() var parse_result JSON.parse(json_string) if parse_result.error OK: var save_data: Dictionary parse_result.result print(从云端成功加载存档。) return save_data else: print(解析存档数据失败。) else: print(云存档文件不存在。) return null # 加载失败返回null或默认数据注意事项配额限制Steam为每个游戏提供了默认的云存储空间通常为100MB左右。你需要管理好单个存档文件的大小和总文件数量。可以在Steamworks后台查看和申请增加配额。冲突解决当玩家在一台设备上玩游戏然后在另一台未同步的设备上继续玩时可能会产生云存档冲突。Steam客户端会提示用户解决冲突。你的游戏逻辑应该能处理load返回null或加载了旧数据的情况。本地回退即使启用了云存档强烈建议在本地也保留一份存档副本。这样在网络异常或Steam服务暂时不可用时游戏仍能正常运行。云存档应被视为一个同步和备份机制而非唯一存储。3.4 排行榜Leaderboards与多人网络Networking这两个是相对高级的功能GodotSteam提供了封装但需要你更深入地理解Steamworks的概念。排行榜你需要先在Steamworks后台创建排行榜定义其名称API Name、排序方式升序/降序如分数越高越好或时间越短越好。在代码中查找或创建排行榜句柄使用Steam.findOrCreateLeaderboard()获取一个代表该排行榜的句柄leaderboard_handle。上传分数玩家完成一局游戏后调用Steam.uploadLeaderboardScore(leaderboard_handle, upload_type, score)。upload_type很重要它决定是保留最高分k_ELeaderboardUploadScoreMethodKeepBest还是最新分k_ELeaderboardUploadScoreMethodForceUpdate。下载分数使用Steam.downloadLeaderboardEntries()来获取全球排名、好友排名或玩家周围的排名。这是一个异步调用你需要监听相应的信号如leaderboard_scores_downloaded来接收数据。多人网络P2PGodotSteam通过Steam的NAT穿透和中继服务器简化了P2P联机的网络层难题。核心步骤包括会话管理使用Steam.createLobby()创建房间或通过Steam.joinLobby()加入。你可以设置房间类型公开、好友可见、私有、人数上限等。P2P连接在房间内成员之间通过SteamID建立直接的P2P连接Steam.sendP2PPacket()。Steam后台会自动尝试最有效的连接方式直连或通过中继。数据通信你需要自己定义一套应用层协议来序列化和反序列化游戏状态如玩家位置、动作指令。GodotSteam只负责可靠或不可靠的二进制数据包传输。信号回调几乎所有网络操作都是异步的。你必须连接GodotSteam提供的信号例如lobby_created、lobby_joined、p2p_session_request当其他玩家试图连接你时触发需要你调用Steam.acceptP2PSessionWithUser()来允许连接和p2p_session_connect_fail。提示对于复杂的多人游戏仅靠GodotSteam的底层P2P通信可能不够。许多开发者会结合Godot的高级网络API如ENetMultiplayerPeer或使用更上层的网络库如Godot的MultiplayerAPI而仅用Steam来处理好友列表、大厅管理和NAT穿透的初始握手。这被称为“混合网络”架构。4. 开发全流程、调试与上线实战将GodotSteam集成到开发流程中需要一套不同于纯单机开发的实践。4.1 开发环境配置与工作流获取App ID在Steamworks网站注册并创建你的游戏应用获得唯一的App ID。这是所有测试的基石。设置测试清单在Steamworks后台你需要配置测试用的“程序包”Depot并创建一个“测试许可”Playtest或直接配置为“开发中”版本。将你的开发团队成员添加为“开发者”或“测试员”他们才能通过Steam客户端访问和测试你的游戏。本地测试在项目根目录创建steam_appid.txt写入你的App ID。使用集成了GodotSteam的引擎运行游戏。此时你可以测试大部分需要初始化但不严格依赖Steam客户端环境的功能如成就、统计的逻辑但云存档写入可能受限。沙盒测试通过Steam客户端以“开发者模式”启动游戏或者将游戏构建上传到Steam的“开发”Depot然后通过Steam客户端下载并启动。这是最接近真实环境的测试可以测试云存档、排行榜上传下载、多人联机等所有功能。自动化构建考虑将GodotSteam的编译和游戏导出集成到你的CI/CD持续集成/部署流水线中。例如使用GitHub Actions在每次提交后自动编译带Steam模块的引擎并导出游戏的Windows和Linux版本上传到Steam的Dev Depot。4.2 调试技巧与常见问题排查即使按照文档操作你也一定会遇到问题。以下是一些实战中总结的排查思路问题一Steam初始化失败steamInit()返回非1检查1运行环境。你是否通过Steam客户端启动了游戏或者在开发时steam_appid.txt文件是否存在且内容正确检查2SDK文件。确保steam_api.dllWindows或libsteam_api.soLinux存在于游戏可执行文件同级目录下。并且其版本与你使用的Steamworks SDK版本匹配。检查3导出模板。如果你使用的是自定义编译的引擎确保你导出游戏时使用的“导出模板”也是同一个编译版本。使用不匹配的模板会导致初始化失败。检查4控制台输出。GodotSteam通常会在Godot编辑器的“输出”面板或系统控制台打印详细的错误信息。仔细阅读这些信息它们往往直接指出了问题所在。问题二成就或统计不更新检查1storeStats()调用了吗这是最容易被遗忘的一步。确保在修改数据后调用了它。检查2Steamworks后台配置。登录Steamworks网站检查成就/统计的API名称是否与代码中完全一致大小写敏感。确认成就的状态是“已发布”或至少“可用于测试”。检查3网络延迟。上传到Steam服务器并刷新玩家个人资料页面可能需要几秒到一分钟。请耐心等待。检查4开发期缓存。有时Steam客户端会缓存旧的成就状态。尝试完全退出Steam客户端并重新登录。问题三云存档不同步或冲突检查1云功能是否启用。在Steamworks后台确保为你游戏的Depot启用了“Steam云”支持。检查2文件路径和名称。确保读写云存档时使用的文件名是稳定且唯一的。避免使用可能冲突的临时文件名。检查3处理加载失败。你的load_game_from_cloud函数必须有健全的错误处理当云存档不存在、损坏或读取失败时能够回退到本地存档或新游戏状态。模拟测试在一台电脑上存档然后在另一台电脑上使用同一个Steam测试账号启动游戏检查是否能正确加载。这是测试云同步最直接的方法。问题四多人游戏连接失败检查1NAT类型。Steam的NAT穿透能力很强但极端对称型NAT或某些企业防火墙仍可能导致连接失败。确保测试环境网络不是“严格对称型NAT”。检查2信号连接。你是否正确连接了p2p_session_request信号当其他玩家尝试连接你时你必须在这个信号的回调函数中调用acceptP2PSessionWithUser()否则连接会被拒绝。检查3端口转发。虽然Steam中继可以解决大部分问题但在开发期确保UDP端口3478、4379、4380在防火墙上是开放的可以提高直连成功率。使用网络调试工具在代码中大量使用print()输出连接状态、SteamID、数据包收发情况。GodotSteam也提供了一些获取连接状态getP2PSessionState()的函数可以帮助诊断。4.3 上线前的最终检查清单在将你的游戏提交给Steam进行审核Release之前请对照此清单进行最终确认检查项具体内容验证方法1. 成就与统计- 所有成就的API名称、显示名称、图标、描述正确无误。- 成就的“隐藏”属性设置正确。- 统计数据Stats的名称和类型Int, Float, AvgRate配置正确。在游戏测试版本中完整触发一遍所有成就并在Steam客户端个人资料页查看是否正常显示。检查统计后台数据是否有更新。2. 云存档- Depot已启用Steam云。- 云存储配额充足。- 游戏能正确处理云存档冲突本地和云端版本号不同。在两台设备上用同一账号测试存档-退出-同步-另一台设备加载的完整流程。3. 多人功能- 大厅创建、加入、搜索功能正常。- P2P通信在局域网和广域网下均经过测试。- 玩家离开、掉线处理逻辑健全。组织多人在不同网络环境家庭、公司、移动热点下进行联机测试。4. 商店与社区- 游戏在Steam商店的“丰富状态”显示正常如正在游戏中、正在某关卡。- 游戏可以正确设置自定义封面图setRichPresence。运行游戏让好友在Steam好友列表中查看你的状态。5. 微交易如适用- Steamworks道具Item配置正确。- 购买、消费、库存查询流程完整。- 正确处理交易失败、退款等情况。使用Steam提供的“沙盒模式”或低价值真实货币进行端到端测试。6. 代码清理- 移除了所有调试用的print语句或日志。- 确保steam_appid.txt文件没有被打包到发行版中。- 禁用了开发期用的clearAchievement和resetAllStats等危险函数的调用路径。使用发行Release模式导出游戏并检查导出目录下的文件。进行一轮完整的“纯净”测试。7. 错误处理- Steam初始化失败有明确的用户提示如“请通过Steam客户端启动游戏”。- 网络请求失败如排行榜下载、云存档不会导致游戏崩溃有降级方案如显示本地排行榜、使用本地存档。模拟断网环境或通过防火墙屏蔽Steam相关端口测试游戏的健壮性。完成以上所有检查后你就可以相对有信心地将构建好的游戏包上传到Steam的“默认”或“发布”Depot提交给Valve进行审核了。记住第一次上线总是最令人紧张的但只要你遵循了上述流程并进行了充分测试GodotSteam这个坚实的桥梁会帮助你顺利地将你的Godot创意送达全球Steam玩家的手中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2583950.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…