rust维京船_如何评价维京生存游戏《Valheim:英灵神殿》?

昨天刚入,和朋友试玩了两个小时。

相同类型的游戏玩得不多,就从普通玩家的角度说几点。

一、整体而言还不错,1个G的游戏但是感觉内容超想象。真实的物理引擎,此处建议在树木密集的地方砍树,砍倒一棵倒下来之后,有机会砸到附近的树,超省事=.= 目前只过了第一只BOSS,然后貌似还能无限刷的样子,整的跟刷副本似的。然后就迷茫了,找不到下一个目标地点,晚上继续探索。

二、感觉是不是有点用力错误了,这光影,这粒子,我这破笔记本中特效60帧都到不了哈哈哈,当然画质看人,可以自己调。然后就是手感方面有点吃屎哈哈哈,操作有点笨拙不过还是能接受的,1个G的游戏,你还能要求什么呢,不是吗。

三、第三人称视角好评,之前试了10分钟RUST实在玩不下去。

暂时就想到这么多,70块能和朋友联机一起探索,就目前来说还是可以的,目的性相对明确又保证了自由度,结合了刷刷刷和打BOSS,这样的结合还挺好玩的。

这里我就要点名批评The long dark 了(不是),出个联机多香。不过想想,如果The long dark有了联机模式之后这游戏就是去了它本来的魅力了吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用以下代码: let socket_addr: std::net::SocketAddr = // ...; let win_socket_addr: windows_sys::Win32::Networking::WinSock::SOCKADDR_IN = socket_addr.into(); ### 回答2: 要将std::net::SocketAddr转化为windows_sys::Win32::Networking::WinSock::SOCKADDR_IN,可以使用以下Rust代码: ```rust use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr}; use winapi::um::winsock2::SOCKADDR_IN; use winapi::shared::ws2def::{AF_INET, AF_INET6}; use winapi::shared::in6addr::in6addr_any; fn socket_addr_to_sockaddr_in(socket_addr: &SocketAddr) -> SOCKADDR_IN { let ip_addr = socket_addr.ip(); let port = socket_addr.port(); match ip_addr { IpAddr::V4(ipv4_addr) => { let mut sockaddr_in: SOCKADDR_IN = unsafe { std::mem::zeroed() }; sockaddr_in.sin_family = AF_INET as u16; sockaddr_in.sin_addr.S_un.S_addr = u32::from(ipv4_addr); sockaddr_in.sin_port = port.to_be(); sockaddr_in } IpAddr::V6(ipv6_addr) => { let mut sockaddr_in6: SOCKADDR_IN = unsafe { std::mem::zeroed() }; sockaddr_in6.sin6_family = AF_INET6 as u16; sockaddr_in6.sin6_port = port.to_be(); sockaddr_in6.sin6_addr = *ipv6_addr.segments(); if *ipv6_addr == Ipv6Addr::from(in6addr_any) { sockaddr_in6.sin6_addr = *in6addr_any; } sockaddr_in6 } } } fn main() { let socket_addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080); let sockaddr_in = socket_addr_to_sockaddr_in(&socket_addr); // Do something with the converted SOCKADDR_IN println!( "Converted SOCKADDR_IN: {{ family: {}, addr: {}, port: {} }}", sockaddr_in.sin_family, sockaddr_in.sin_addr.S_un.S_addr, sockaddr_in.sin_port ); } ``` 以上代码使用Rust的winapi库来访问Windows Socket API,并将std::net::SocketAddr的IP地址和端口转换为windows_sys::Win32::Networking::WinSock::SOCKADDR_IN结构体。根据输入的std::net::SocketAddr类型,使用IF_INET或IF_INET6来设置SOCKADDR_IN的family字段。然后将IP地址和端口填充到SOCKADDR_IN结构体中。在这个例子中,我们将std::net::SocketAddr转化为127.0.0.1:8080的SOCKADDR_IN。 ### 回答3: 使用Rust编写的代码如下所示: ```rust use std::net::SocketAddr; use windows_sys::Win32::Networking::WinSock::SOCKADDR_IN; fn main() { let socket_addr = SocketAddr::new("127.0.0.1".parse().unwrap(), 8080); let sockaddr_in = SOCKADDR_IN { sin_family: 2, // AF_INET sin_port: socket_addr.port().to_be(), sin_addr: socket_addr.ip().octets().into(), sin_zero: [0; 8], // initialize sin_zero with zeros }; println!("SOCKADDR_IN: {:?}", sockaddr_in); } ``` 以上代码首先导入了`std::net::SocketAddr`和`windows_sys::Win32::Networking::WinSock::SOCKADDR_IN`模块。然后创建了一个`SocketAddr`实例,该实例包含了IP地址和端口号。接下来,我们定义了一个`SOCKADDR_IN`结构体变量,并根据`SocketAddr`的信息进行初始化。最后,打印输出了转换后的`SOCKADDR_IN`实例。 这段代码将`std::net::SocketAddr`转化为了`windows_sys::Win32::Networking::WinSock::SOCKADDR_IN`。在转换过程中,我们将IP地址转化为字节数组,然后将端口号进行了字节序的转换。最后,我们打印输出了转换后的结果,以便验证转换是否成功。 注意:本示例中使用的`sockets` crate中的`windows-sys`模块提供了便于与Windows系统交互的Rust绑定,以简化开发过程。请在使用之前确认已在`Cargo.toml`中添加相应的依赖。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值