貌似。。。我家电脑无法接受4.0啊!!!shit!!!

   

一个多小时整了个联机游戏,真香~~

代码漏洞百出,请各位有心人多多指教!

#start.gd
extends Control

onready var _name=$name
onready var ip=$ip

func _ready():
	get_tree().connect("network_peer_connected",self,"_player_connected")
	if "--server" in OS.get_cmdline_args():
		var net=NetworkedMultiplayerENet.new()
		net.create_server(20033,25)
		print("[]已建立服务器,端口:20033")
		get_tree().set_network_peer(net)
		rpc_unreliable("_server",Auto.player1name)
	pass

func _player_connected(id):
	Auto.player2id=id
	var game=preload("res://Game.tscn").instance()
	print("[]游戏已启动!")
	get_tree().get_root().add_child(game)
	self.hide()
	pass
	
func _on_Server_pressed():
	Auto.player1name=_name.text
	var net=NetworkedMultiplayerENet.new()
	net.create_server(20033,2)
	get_tree().set_network_peer(net)
	rpc_unreliable("_server",Auto.player1name)
	pass # Replace with function body.


func _on_Client_pressed():
	Auto.player1name=_name.text
	rpc_unreliable("_server",Auto.player1name)
	var net=NetworkedMultiplayerENet.new()
	net.create_client(ip.text,20033)
	get_tree().set_network_peer(net)
	pass # Replace with function body.

remote func _server(_text):
	Auto.player2name=_text
	pass
#Game.gd
extends Node2D

onready var player1Pos=$player1Pos
onready var player2Pos=$player2Pos
onready var richtext=$Control/richtext
onready var line=$Control/line
var i=false

func _ready():
	if "--server" in OS.get_cmdline_args():
		Auto.player1name="Server"
	richtext.add_text("[]服务器已开启\n端口:20033\n")
	var player1=preload("res://Player.tscn").instance()
	player1.position=player1Pos.position
	player1.set_name(str(get_tree().get_network_unique_id()))
	player1.set_network_master(get_tree().get_network_unique_id())
	add_child(player1)
	printf(0,"[]玩家%s已进入游戏!\n"%str(Auto.player1name))
	#richtext.push_mono("")
	var player2=preload("res://Player.tscn").instance()
	player2.position=player2Pos.position
	player2.set_name(str(Auto.player2id))
	player2.set_network_master(Auto.player2id)
	add_child(player2)
	#richtext.add_text("<System>玩家%s已进入游戏!\n"%str(Auto.player2name))
	pass # Replace with function body.


func _on_Button_pressed():
	if line.text[0]=="$":
		if line.text=="$clear":
			if i==true:
				richtext.clear()
				rpc_unreliable("_clear")
				printf(0,"<%s>调用了清屏\n"%Auto.player1name)
			else:
				richtext.add_text("[]没有权利调用:%s:请使用$root-true指令申请管理员权限,详情请调用$help指令!\n"%Auto.player1name)
		elif line.text=="$root-true":
			i=true
			printf(0,"[]%s:激活了管理员权限!\n"%Auto.player1name)
		elif line.text=="$root-false":
			i=false
			printf(0,"[]$s:关闭了管理员权限!\n"%Auto.player1name)
		elif line.text=="$root-false-all":
			if i==true:
				i=false
				rpc_unreliable("_root",false)
				printf(0,"[]%s:关闭了所有管理员权限!\n"%Auto.player1name)
			else:
				richtext.add_text("[]没有权利调用:%s:请使用$root-on指令申请管理员权限,详情请调用$help指令!\n"%Auto.player1name)
		elif line.text=="$root-true-all":
			if i==true:
				i=true
				rpc_unreliable("_root",true)
				printf(0,"[]%s:打开了所有管理员权限!\n"%Auto.player1name)
			else:
				richtext.add_text("[]没有权利调用:%s:请使用$root-ture指令申请管理员权限,详情请调用$help指令!\n"%Auto.player1name)
		
		elif line.text=="$help":
			richtext.add_text("[]帮助文档:\n$clear:清屏,需要管理员权限\n$root-true:开启管理员权限,不需要管理员权限\n$root-false:关闭管理员权限,不需要管理员权限\n$clear:清屏,需要管理员权限\n$root-[bool]-all:关闭/开启所有成员的管理员权限,需要管理员权限\n$help:帮助文档,不需要管理员权限\n")
		else:
			printf(0,"[]调用了非法语句:%s:调用了%s,详情请调用$help指令!\n"%[Auto.player1name,line.text])
	else:
		printf(0,"<%s>%s\n"%[Auto.player1name,line.text])
	line.text=""
	pass # Replace with function body.

remote func _text(_text):
	richtext.add_text(_text)
	pass
	
remote func _clear():
	richtext.clear()
	
remote func _print(_text):
	printraw(_text)
	
remote func _root(flag:bool):
	i=flag
	pass
	
func printf(id,dir):
	if id==0:
		richtext.add_text(dir)
		rpc_unreliable("_text",dir)
		printraw(dir)
		rpc_unreliable("_print",dir)
	pass

func get_server(_player):
	
	pass
func _process(_delta):
	if get_tree().get_network_unique_id()==0:
		printf(0,"[]%s已断开连接\n"%Auto.player1name)
		get_tree().notification(MainLoop.NOTIFICATION_WM_QUIT_REQUEST)
	pass
#player.gd
extends Sprite

#onready var richtext=$richtext
var speed=200
var dir=Vector2()

func _ready():
	pass

remote func _set_position(pos):
	position=pos

func _process(_delta):
	dir=Vector2()
	if Input.is_action_pressed("ui_left"):
		dir.x-=1
	if Input.is_action_pressed("ui_right"):
		dir.x+=1
	if Input.is_action_pressed("ui_up"):
		dir.y-=1
	if Input.is_action_pressed("ui_down"):
		dir.y+=1
		
	dir=dir.normalized()
	
	if dir!=Vector2():
		if is_network_master():
			position+=speed*dir*_delta
		rpc_unreliable("_set_position",position)
	pass
#Auto.gd
extends Node

var player=[]
var player2id=0
var playernum=1
var player1name=""
var player2name=""
var serverplayer=true

func _ready():
	pass
查看更多.....
   

GodotEngine 4.0 和 3.5beta 中的新功能:让您的 StyleBoxFlats 水平或垂直倾斜,让您的 UI 具有“未来感”的感觉。以及,使用和不使用抗锯齿和圆角。

   

导致 Godot 成为 GitHub 上最大的项目之一(就贡献者数量而言)的许多独特因素之一是代码库以“可访问的 C++”形式编写,有目的地保持简单并避免复杂的构造(和 STL)

   

同一场景在 Blender(左) 和 Godot(右) 中不同的表现力~

   

使用 Godot Engine 4.0 渲染小水果场景

   

Godot 4.0 alpha 7 中新增的动画库:

AnimationPlayer 节点现在包含库,而不是包含单个动画。反过来,库包含动画。
如果库名是空的,那么它的行为就像到现在为止一样(只播放“动画名”)。如果您命名库,则必须将其播放为“库/动画名称”。这确保了向后兼容性并在不想使用多个库的情况下保持现有工作流程。
添加了向后兼容性(以以前的格式保存的场景将根据动画的需要创建一个库)。
这为实现将场景作为动画库导入的可能性铺平了道路,最终允许导入与 3D 模型分开的动画。

可以将场景 (dae/fbx/gltf) 作为动画库导入。
使 AnimationTree 可以自行导入动画库,因此它不依赖 AnimationPlayer 来处理所有事情。

查看更多.....
   

“游戏就绪”级别的卫星地图数据?是的!现在可以通过插件,将任何城市(卫星地图)变成可玩的游戏(场景),直接创建出和地图保持一致的3D建筑物及街区!过于牛[哗]~

   

新的 GodotEngine 4.0 alpha 7 中增加了许多很酷的新功能,例如 Label3D、动画库、场景独特节点、在 GDScript lambdas 中使用“self”、在 Visual Shaders 中使用 Vector4、改进的噪声、导航和网络等等~

查看更多.....
   

新的 Godot 4.0 Alpha 7 中新添加了一个 Label3D (3D标签)节点!

   

入门菜鸟x1...

        啊,今天刚刚入门godot[]~( ̄▽ ̄)~*,感觉比armory3D强大多了。看了论坛一不小心闯进这个网站,希望能获得亿点帮助哈(∪.∪ )...zzz

   

有趣的Godot技巧:

可以重载 to_string() 函数,当你调试尝试打印一个对象时,你可以自定义得到一堆想要的自定义数据~

   

Godot 4.0 的画质渲染

   

Godot的场景美化

   

发行十余年的格斗游戏 Overgrowth(中文名:复仇格斗兔2)正式宣布开源。

Overgrowth(中文名:复仇格斗兔2)是游戏公司 Wolfire 制作的一款动作冒险游戏,玩法有点类似于《刺客信条》,不过玩家控制的是一只肌肉壮硕的兔子与其他动物进行格斗,每种动物各有特点,比如猫(移速高)、狗(血厚,不能被暗杀)、鼠(攻速快但脆弱)、狼(血厚、不能被暗杀、攻击不可防御、伤害极高)。游戏的一大亮点是它有一个非常真实的物理引擎,格斗的效果都使用该物理引擎实时渲染,因此打击感极为真实。

除了代码开源,游戏还降价了三分之一,从 30 美金降到 20 美金。

查看更多.....
   

【元宇宙编程】一个基于 Godot引擎 的 VR桌面 开源项目,Linux 的 虚拟现实窗口管理器,真*沉浸式编程!

如果想安装这个 VR 桌面,只需要运行下面的命令和准备其他设备:

# Clone
git clone --depth 1 --recursive https://github.com/SimulaVR/Simula
cd Simula

# Download (or build, if downloading fails)
source ./utils/Helpers.sh && installSimula

# Launch
./result/bin/simula # Needs SteamVR to be running
查看更多.....
   

最新发布的 Godot 3.5 Beta 3 开发版已支持在 Android 上运行

   

想要在点击按钮后不出现边框,只需要在属性面板中找到Custom Styles,展开这个后在里面的Focus属性中新建一个StyleBoxEmpty就行了,如图

   

要使图片半透明化,只需要在属性面板里调整Visibility里的Modulate属性就行了,如图所示

   
# 1
Godot中文社区开发完成,正式上线啦!
   
Copyright Godot社区 Godot2D.com All Rights Reserved.
京ICP备13032831号