### Godot version

3.5.1.stable, v4.0.beta.custom_build [0a87ead64]

### System information

Ubuntu 22.04.1

### Issue description

For example, if project has name "300spartans", we can't enter the "org.godotengine.300spartans" to "Unique Name" field. We get the error "Invalid package name: A digit cannot be the first character in a package segment". But , if we enter "org.godotengine.$genname", there will be no error message. When exporting, the name will be set as "org.godotengine.spartans" without "300" in beginning, but user will not be informed about it. I think, it is not very good. It may not be worth making changes to the source code, but mention it in the documentation.

### Steps to reproduce

See issue description.

### Minimal reproduction project

N/A
bool screen_support_xlarge = p_preset->get("screen/support_xlarge");
	int xr_mode_index = p_preset->get("xr_features/xr_mode");
	int hand_tracking_index = p_preset->get("xr_features/hand_tracking");
	int hand_tracking_frequency_index = p_preset->get("xr_features/hand_tracking_frequency");
	bool backup_allowed = p_preset->get("user_data_backup/allow");
	int app_category = p_preset->get("package/app_category");
	bool retain_data_on_uninstall = p_preset->get("package/retain_data_on_uninstall");
	bool exclude_from_recents = p_preset->get("package/exclude_from_recents");
	bool is_resizeable = bool(GLOBAL_GET("display/window/size/resizable"));
	Vector<String> perms;
	
	_get_permissions(p_preset, p_give_internet, perms);
	bool has_read_write_storage_permission = _has_read_write_storage_permission(perms);
	while (ofs < (uint32_t)p_manifest.size()) {
		uint32_t chunk = decode_uint32(&p_manifest[ofs]);
		uint32_t size = decode_uint32(&p_manifest[ofs + 4]);
		switch (chunk) {
			case CHUNK_STRINGS: {
				int iofs = ofs + 8;
				string_count = decode_uint32(&p_manifest[iofs]);
				string_flags = decode_uint32(&p_manifest[iofs + 8]);
				string_data_offset = decode_uint32(&p_manifest[iofs + 12]);
				uint32_t st_offset = iofs + 20;
				string_table.resize(string_count);
				uint32_t string_end = 0;
				string_table_begins = st_offset;
				for (uint32_t i = 0; i < string_count; i++) {
					uint32_t string_at = decode_uint32(&p_manifest[st_offset + i * 4]);
					string_at += st_offset + string_count * 4;
					ERR_FAIL_COND_MSG(string_flags & UTF8_FLAG, "Unimplemented, can't read UTF-8 string table.");