Scarface-void Core Engine 是一个开源的脚本系统,旨在为游戏开发和其他应用提供一个灵活的基础来构建定制化的引擎。以下是对该引擎的详细介绍以及如何开始使用它的指南:
1. Scarface-void Core Engine 概述
- 目标:为游戏开发和其他应用提供一个灵活、可扩展的脚本系统。
- 特点:
- 开源:代码公开,允许开发者自由修改和扩展。
- 脚本化:支持脚本语言,便于快速开发和迭代。
- 模块化:提供基础模块,开发者可以根据需求定制引擎。
- 跨平台:支持多种平台(如 Windows、Linux、macOS)。
- 轻量级:专注于核心功能,避免过度复杂化。
2. 核心功能
- 脚本系统:支持脚本语言(如 Lua、Python 或其他自定义语言),用于定义游戏逻辑和行为。
- 资源管理:提供资源加载和管理功能(如图片、音频、模型等)。
- 渲染引擎:支持 2D/3D 渲染,提供基础的图形 API 封装。
- 物理引擎:集成物理模拟功能(如碰撞检测、刚体动力学)。
- 输入系统:处理键盘、鼠标、手柄等输入设备。
- 音频系统:支持音效和背景音乐的播放与管理。
- 网络模块:提供基础的网络通信功能(如 TCP/UDP 协议)。
3. 开始使用 Scarface-void Core Engine
步骤 1:获取源码
- 访问项目的官方仓库(如 GitHub、GitLab 或其他代码托管平台)。
- 克隆或下载源码:
git clone https://github.com/your-repo/scarface-void-core-engine.git
步骤 2:安装依赖
- 根据项目文档,安装所需的依赖项(如编译器、库文件、工具链等)。
- 示例(假设使用 CMake 构建):
sudo apt-get install build-essential cmake
步骤 3:构建引擎
- 进入项目目录:
cd scarface-void-core-engine
- 创建构建目录并编译:
mkdir build cd build cmake .. make
步骤 4:运行示例
- 编译完成后,运行示例程序以验证引擎是否正常工作:
./example-game
- 如果示例程序正常运行,说明引擎已成功构建。
步骤 5:创建自定义项目
- 在引擎的基础上创建自己的项目目录:
mkdir my-game cd my-game
- 将引擎的核心库和头文件链接到您的项目中。
- 编写脚本或代码,定义游戏逻辑和行为。
4. 开发指南
脚本系统
- 使用支持的脚本语言(如 Lua)编写游戏逻辑:
function onUpdate(deltaTime) -- 更新游戏逻辑 end function onRender() -- 渲染游戏画面 end
资源管理
- 加载资源(如图片、音频):
local texture = ResourceManager.loadTexture("assets/textures/player.png") local sound = ResourceManager.loadSound("assets/audio/jump.wav")
渲染引擎
- 渲染 2D 精灵:
Renderer.drawSprite(texture, x, y, width, height)
物理引擎
- 添加刚体并模拟物理效果:
local body = Physics.createBody(x, y, width, height) body:applyForce(0, -9.8) -- 模拟重力
输入系统
- 处理键盘输入:
if Input.isKeyPressed("space") then -- 处理跳跃逻辑 end
音频系统
- 播放音效:
Audio.playSound(sound)
5. 最佳实践
- 模块化设计:将游戏逻辑拆分为独立的模块,便于维护和扩展。
- 性能优化:避免在脚本中执行高开销操作,尽量使用引擎提供的原生功能。
- 版本控制:使用 Git 或其他版本控制工具管理项目代码。
- 社区支持:加入项目的社区或论坛,获取帮助和分享经验。
6. 示例项目
以下是一个简单的示例项目结构:
my-game/
├── assets/
│ ├── textures/
│ └── audio/
├── scripts/
│ └── main.lua
└── CMakeLists.txt
在 main.lua
中编写游戏逻辑,并通过 CMake 将项目与引擎链接。
7. 总结
Scarface-void Core Engine 是一个灵活的开源脚本系统,适合游戏开发和其他应用。通过获取源码、安装依赖、构建引擎并编写脚本,您可以快速创建定制化的引擎和项目。遵循最佳实践并积极参与社区,可以进一步提升开发效率和项目质量。
Scarface-void Core Engine 是一个开源的脚本系统,它旨在为游戏开发和其他应用提供一个灵活的基础来构建定制化的引擎。其核心是一个虚空(void)虚拟机,这意味着开发者可以利用这个框架作为起点,自由地定义和扩展其计算和逻辑结构。通过这个系统,开发者可以定制自己的游戏逻辑、渲染管道或其他关键功能。
具体来说,你可以这样使用它:
- 安装和集成:首先,从GitHub或其他官方仓库下载并集成到你的项目中。
- 创建虚拟机:利用Core Engine提供的API创建一个新的虚机动态环境。
- 编写脚本:使用支持的语言(如Lua或Python),编写实现特定功能的脚本。
- 自定义扩展:对虚空的核心进行扩展,以适应项目的特殊需求。
- 运行和调试:运行你的脚本,在开发过程中测试和优化。
Scarface-void Core Engine主要作为一款开源框架,它的设计通常是为了跨平台使用,以支持多种编程语言的开发。虽然具体的官方文档或社区指南可能会指定某种或几种首选的语言,但鉴于它是"脚本支持",它很可能支持那些有广泛脚本插件或API绑定的语言,比如C#(通过Unity或Unreal Engine常见的做法)、JavaScript (用于前端UI或WebGL),以及可能的Python或Lua等解释性语言,因为这些语言常用于游戏引擎中的脚本编程。然而,没有直接说明它支持哪种编程语言编写核心代码,因此具体支持哪些编程语言依赖于该引擎的具体实现和社区实践。建议查阅项目文档或查看其GitHub仓库来获取最新信息。
jBPM Documentation
The jBPM Team https://www.jbpm.org/community/team.html version 7.25.0.Final
Table of Contents
1. Overview
1.1. What is jBPM?
1.2. Overview
1.3. Core Engine
1.4. Business Central
1.4.1. Process Designer
1.4.2. Data Modeler
1.4.3. Process Management
1.4.4. Task Inbox
1.4.5. Business Activity Monitoring
1.5. Eclipse Developer Tools
2. Getting Started
2.1. Downloads
2.2. Community
2.3. Sources
2.3.1. License
2.3.2. Source code
2.3.3. Building from source
2.4. Getting Involved
2.4.1. Sign up to jboss.org
2.4.2. Sign the Contributor Agreement
2.4.3. Submitting issues via JIRA
2.4.4. Fork GitHub
2.4.5. Writing Tests
2.4.6. Commit with Correct Conventions
2.4.7. Submit Pull Requests
2.5. What to do if I encounter problems or have questions?
3. Business applications
3.1. Overview
3.2. Create your business application
3.2.1. Generate business application
3.2.2. Manually create business application
3.3. Run your business application
3.3.1. Launch application
3.3.2. Launch application in development mode
3.3.3. Import your business assets project into Business Central
3.4. Configure business application
3.4.1. Configuring core components
3.5. Develop your business application
3.5.1. Data model
3.5.2. Business assets development
3.5.3. Work Item Handlers
3.5.4. Event listeners
3.5.5. Custom REST endpoints
3.6. Deploy business application
3.6.1. OpenShift deployment
3.6.2. Docker deployment
3.6.3. Using external data base
3.7. Tutorials
3.7.1. My First Business Application
3.7.2. Business Application with Business Assets
3.7.3. Business Application with custom work item handlers and event listeners
3.7.4. Business Application with JPA entity
3.7.5. Business Application with ElasticSearch
3.7.6. Business Application with JMS
3.7.7. Business Application with Dynamic Assets
4. jBPM Installer
4.1. Prerequisites
4.2. Downloading the Installer
4.3. Demo Setup
4.4. 10-Minute Tutorial using Business Central
4.5. 10-Minute Tutorial using Eclipse
4.6. Configuration
4.6.1. Business Central Authentication
4.6.2. Using your own database with the jBPM installer
4.6.3. jBPM database schema scripts (DDL scripts)
4.6.4. jBPM installer script
4.7. Frequently Asked Questions
5. Examples
5.1. Introduction
5.2. Importing Projects through Git
5.3. Human Resources Example
5.3.1. The Kie Project: human-resources
5.3.2. Building the Human Resources Example
5.3.3. Create a new Process Instance
5.4. Examples zip
6. jBPM Version Migration Guide
6.1. Deprecated in jBPM 7
6.2. Changed in jBPM 7
7. Core Engine API
7.1. Overview
7.2. KieBase
7.3. KieSession
7.3.1. ProcessRuntime
7.3.2. Event Listeners
7.3.3. Correlation Keys
7.3.4. Threads
7.4. RuntimeManager
7.4.1. Overview
7.4.2. Strategies
7.4.3. Usage
7.4.4. Configuration
7.5. Services
7.5.1. Deployment Service
7.5.2. Definition Service
7.5.3. Process Service
7.5.4. Runtime Data Service
7.5.5. User Task Service
7.5.6. Quartz-based Timer Service
7.5.7. QueryService
7.5.8. ProcessInstanceMigrationService
7.5.9. Working with deployments
7.6. Configuration
8. Processes
8.1. What is BPMN 2.0
8.2. Process
8.2.1. Creating a process
8.3. Activities
8.3.1. Script task
8.3.2. Service task
8.3.3. User task
8.3.4. Reusable sub-process
8.3.5. Business rule task
8.3.6. Embedded sub-process
8.3.7. Multi-instance sub-process
8.4. Events
8.4.1. Start event
8.4.2. End events
8.4.3. Intermediate events
8.5. Gateways
8.5.1. Diverging gateway
8.5.2. Converging gateway
8.6. Others
8.6.1. Variables
8.6.2. Scripts
8.6.3. Constraints
8.6.4. Timers
8.7. Process Fluent API
8.7.1. Example
8.8. Testing
8.8.1. Unit testing
9. Human Tasks
9.1. Introduction
9.2. Using User Tasks in our Processes
9.2.1. Swimlanes
9.3. Task escalations and notifications
9.3.1. Designing a task escalation
9.3.2. Email notifications
9.3.3. Designing email notifications
9.3.4. Time and Duration definitions
9.4. Data Mappings
9.5. Task Lifecycle
9.6. Task Permissions
9.6.1. Task Permissions Matrix
9.7. Task Service and The jBPM engine
9.8. Task Service API
9.8.1. Task event listener
9.8.2. Data model of task service
9.9. Interacting with the Task Service
9.10. Experimental features
9.10.1. SubTasks
10. Persistence and Transactions
10.1. Process Instance State
10.1.1. Runtime State
10.2. Audit Log
10.2.1. The jBPM Audit data model
10.2.2. Storing Process Events in a Database
10.2.3. Storing Process Events in a JMS queue for further processing
10.2.4. Variables auditing
10.3. Transactions
10.3.1. Container managed transactions
10.4. Configuration
10.4.1. Adding dependencies
10.4.2. Manually configuring the jBPM engine to use persistence
10.4.3. Configuring the jBPM engine to use persistence
10.5. Persisting process variables in a separate database schema in jBPM
11. Business Central (General)
11.1. Installation
11.1.1. War installation
11.1.2. Business Central data
11.1.3. System properties
11.1.4. Trouble shooting
11.2. Quick Start
11.2.1. Importing examples
11.2.2. Add Project
11.2.3. Define Data Model
11.2.4. Define Rule
11.2.5. Build and Deploy
11.3. Configuration
11.3.1. Basic user management
11.3.2. Roles
11.4. Introduction
11.4.1. Log in and log out
11.4.2. Home screen
11.4.3. Business Central overview
11.4.4. Business Central user interface concepts
11.5. Changing the layout
11.5.1. Resizing
11.6. Authoring (General)
11.6.1. Artifact Repository
11.6.2. Asset Editor
11.6.3. Tags Editor
11.6.4. Project Explorer
11.6.5. Project Editor
11.6.6. Validation
11.6.7. Data Modeller
11.6.8. Data Sets
11.6.9. Data Source Management
11.7. Security management
11.7.1. Basic concepts
11.7.2. Installation and setup
11.7.3. Usage
11.7.4. Security Settings Editor
11.7.5. Security Policy Storage
11.8. SSH keystore
11.8.1. Introduction
11.8.2. Using the SSH keystore
11.9. Embedding Business Central in Your Application
11.10. Execution Server Management UI
11.10.1. Server Templates
11.10.2. Container
11.10.3. Remote Server
11.11. Experimental Features Framework
11.11.1. Introduction
11.11.2. Types of Experimental Features
11.11.3. Experimental Features Editor
11.11.4. Enabling the Experimental Features Framework
11.12. Business Central profiles
11.12.1. Introduction
11.12.2. Selecting a profile
12. Business Central integration
12.1. Knowledge Store REST API for Business Central spaces and projects
12.1.1. Sending requests with the Knowledge Store REST API using a REST client or curl utility
12.1.2. Supported Knowledge Store REST API endpoints
12.2. Embedded jBPM controller calls
12.3. Keycloak SSO integration
12.3.1. Scenario
12.3.2. Install and set up a Keycloak server
12.3.3. Create and set up the demo realm
12.3.4. Install and set up Business Central
12.3.5. Securing Business Central remote services via Keycloak
12.3.6. Securing Business Central's file system services via Keycloak
12.3.7. Execution server
12.3.8. Consuming remote services
12.3.9. Keycloak and the Business Central's security administration area
13. Business Central High Availability
13.1. VFS clustering
13.2. jBPM clustering
14. Designer
14.1. Designer UI Explained
14.2. Getting started with Modelling
14.3. Designer Toolbar
14.4. Designer keyboard shortcuts overview
14.5. Designer Customization
14.5.1. System Properties
14.5.2. Development System Properties
15. Runtime Management
15.1. Deployments
15.1.1. Deployment descriptors
15.2. Process Deployments
16. Process Management
16.1. Management Screens Overview
16.1.1. Table preferences
16.1.2. Filter dock
16.1.3. Advanced filter dock
16.1.4. Saved Filter dock
16.1.5. The list table area
16.2. Process Management
16.2.1. Process Definitions Management
16.2.2. Process Instances Management
16.3. Tasks Management
16.3.1. Tasks visible to the current user
16.3.2. Task Inbox
16.3.3. Displaying Task variables in Task Inbox and Manage Tasks
16.4. Jobs Management
16.4.1. Bulk actions
16.5. Execution Errors Management
16.5.1. Specific actions for Execution Errors.
17. Business Activity Monitoring
17.1. Overview
17.2. Business Dashboards
17.3. Process & Task Reports
17.3.1. Process Reports
17.3.2. Task Reports
18. KIE Execution Server
18.1. Overview
18.1.1. Glossary
18.2. Installing the KIE Server
18.2.1. Bootstrap switches
18.2.2. Installation details for different containers
18.3. Kie Server setup
18.3.1. Managed Kie Server
18.3.2. Unmanaged KIE Execution Server
18.4. Creating a Kie Container
18.5. Managing Containers
18.5.1. Starting a Container
18.5.2. Stopping and Deleting a Container
18.5.3. Updating a Container
18.6. KIE Server REST API for KIE containers and business assets
18.6.1. Sending requests with the KIE Server REST API using a REST client or curl utility
18.6.2. Sending requests with the KIE Server REST API using the Swagger interface
18.6.3. Supported KIE Server REST API endpoints
18.7. KIE Server Java client API for KIE containers and business assets
18.7.1. Sending requests with the KIE Server Java client API
18.7.2. Supported KIE Server Java clients
18.7.3. Example requests with the KIE Server Java client API
18.8. KIE Server and KIE container commands in jBPM
18.8.1. Sample KIE Server and KIE container commands
18.9. Runtime commands in jBPM
18.9.1. Sample runtime commands in jBPM
18.10. jBPM controller REST API for KIE Server templates and instances
18.10.1. Sending requests with the jBPM controller REST API using a REST client or curl utility
18.10.2. Sending requests with the jBPM controller REST API using the Swagger interface
18.10.3. Supported jBPM controller REST API endpoints
18.11. jBPM controller Java client API for KIE Server templates and instances
18.11.1. Sending requests with the jBPM controller Java client API
18.11.2. Supported jBPM controller Java clients
18.11.3. Example requests with the jBPM controller Java client API
18.12. Securing password using key store
18.12.1. Simple usecase
18.12.2. Implementation and business logic
18.12.3. System requirements
18.12.4. Initialization of a key store
18.12.5. System parameters for loading key store
18.12.6. Example
18.13. Prometheus metrics monitoring in jBPM
18.13.1. Configuring Prometheus metrics monitoring for KIE Server
19. jBPM Eclipse Plugin
19.1. jBPM Eclipse Plugin
19.1.1. Installation
19.1.2. jBPM Project Wizard
19.1.3. New BPMN2 Process Wizard
19.1.4. jBPM Runtime
19.1.5. jBPM Maven Project Wizard
19.1.6. Drools Eclipse plugin
19.2. Debugging
19.2.1. The Process Instances View
19.2.2. The Audit View
19.3. Synchronizing with Business Central Repositories
19.3.1. Importing a Business Central repository
19.3.2. Committing changes to Business Central
19.3.3. Updating from Business Central
19.3.4. Working on individual projects
20. Eclipse BPMN 2.0 Modeler
20.1. Overview
20.2. Installation
20.3. Documentation
21. Integration
21.1. Maven
21.1.1. Maven artifacts as deployment units
21.1.2. Use Maven for dependency management
21.2. CDI
21.2.1. Overview
21.2.2. RuntimeManager as CDI bean
21.3. Spring
21.3.1. Direct use of Runtime Manager API
21.3.2. jBPM services with Spring
21.4. Ejb
21.4.1. Ejb services implementation
21.4.2. Local interface
21.4.3. Remote interface
21.5. OSGi
22. Domain Specific Processes
22.1. Introduction
22.2. Overview
22.2.1. Work Item Definitions
22.2.2. Work Item Handlers
22.3. Example: Notifications
22.3.1. The Notification Work Item Definition
22.3.2. The NotificationWorkItemHandler
22.4. Service Repository
22.4.1. Public jBPM service repository
22.4.2. Building and extending the jBPM Service Repository
22.4.3. Using repository workitems in your processes
22.4.4. Setting up your own service repository
22.4.5. Workitem Configuration (wid) from Handler Annotations
22.4.6. Programatically interacting with the service repository
22.4.7. Defining extended service configuration with JSON
23. Exception Management
23.1. Overview
23.2. Introduction
23.3. Technical Exceptions
23.3.1. Introduction
23.3.2. Handling exceptions in WorkItemHandler instances
23.3.3. Examples
23.4. Business Exceptions
23.4.1. Business Exceptions elements in BPMN2
23.4.2. Designing a workflow with Business Exceptions
24. Flexible Processes
25. Concurrency and asynchronous execution
25.1. Concurrency
25.1.1. Engine execution
25.1.2. Multiple KIE sessions and persistence
25.2. Asynchronous execution
25.2.1. Asynchronous handlers
25.2.2. jbpm executor
26. Release Notes
26.1. jBPM 7.25
26.1.1. New and Noteworthy in jBPM 7.25.0
26.2. jBPM 7.24
26.2.1. New and Noteworthy in jBPM 7.24.0
26.3. jBPM 7.23
26.3.1. New and Noteworthy in Business Central 7.23.0
26.4. jBPM 7.22
26.4.1. New and Noteworthy in jBPM 7.22.0
26.5. jBPM 7.21
26.5.1. New and Noteworthy in jBPM 7.21.0
26.6. jBPM 7.20
26.6.1. New and Noteworthy in jBPM 7.20.0
26.7. jBPM 7.19
26.7.1. New and Noteworthy in jBPM 7.19.0
26.8. jBPM 7.18
26.8.1. New and Noteworthy in jBPM 7.18.0
26.8.2. New and Noteworthy in Business Central 7.18.0
26.9. jBPM 7.17
26.9.1. New and Noteworthy in jBPM 7.17.0
26.9.2. New and Noteworthy in Business Central 7.17.0
26.10. jBPM 7.16
26.10.1. New and Noteworthy in jBPM 7.16.0
26.10.2. New and Noteworthy in Business Central 7.16.0
26.11. jBPM 7.15
26.11.1. New and Noteworthy in jBPM 7.15.0
26.11.2. New and Noteworthy in KIE Workbench 7.15.0
26.12. jBPM 7.14
26.12.1. New and Noteworthy in jBPM 7.14.0
26.12.2. New and Noteworthy in KIE Workbench 7.14.0
26.13. jBPM 7.13
26.13.1. New and Noteworthy in jBPM 7.13.0
26.13.2. New and Noteworthy in KIE Workbench 7.13.0
26.14. jBPM 7.12
26.14.1. New and Noteworthy in jBPM 7.12.0
26.15. jBPM 7.11
26.15.1. New and Noteworthy in jBPM 7.11.0
26.15.2. New and Noteworthy in KIE Workbench 7.11.0
26.16. jBPM 7.10
26.16.1. New and Noteworthy in jBPM 7.10.0
26.17. jBPM 7.9
26.17.1. New and Noteworthy in jBPM 7.9.0
26.18. jBPM 7.8
26.18.1. New and Noteworthy in jBPM 7.8.0
26.18.2. New and Noteworthy in KIE Workbench 7.8.0
26.19. jBPM 7.7
26.19.1. New and Noteworthy in jBPM 7.7.0
26.19.2. New and Noteworthy in KIE Workbench 7.7.0
26.20. jBPM 7.6
26.20.1. New and Noteworthy in jBPM 7.6.0
26.20.2. New and Noteworthy in KIE Workbench 7.6.0
26.21. jBPM 7.5
26.21.1. New and Noteworthy in jBPM 7.5.0
26.21.2. New and Noteworthy in KIE Workbench 7.5.0
26.21.3. New jBPM controller client API
26.21.4. Breaking changes in Kie Server 7.5.1 from 7.0
26.22. jBPM 7.4
26.22.1. New and Noteworthy in jBPM 7.4.0
26.22.2. New and Noteworthy in KIE Workbench 7.4.0
26.23. jBPM 7.3
26.23.1. New and Noteworthy in jBPM 7.3.0
26.23.2. New and Noteworthy in KIE Workbench 7.3.0
26.24. jBPM 7.2
26.24.1. New and Noteworthy in jBPM 7.2.0
26.25. jBPM 7.1
26.25.1. New and Noteworthy in jBPM 7.1.0
26.25.2. New and Noteworthy in KIE Workbench 7.1.0
26.26. jBPM 7.0
26.26.1. New and Noteworthy in jBPM 7.0.0
26.26.2. New and Noteworthy in KIE Workbench 7.0.0
26.26.3. Breaking changes in Kie Server 7.0 from 6.x
26.27. jBPM 6.5
26.27.1. New and Noteworthy in jBPM 6.5.0
26.27.2. New and Noteworthy in KIE Workbench 6.5.0
26.28. jBPM 6.4
26.28.1. New and Noteworthy in jBPM 6.4.0
26.28.2. New and Noteworthy in KIE Workbench 6.4.0
26.29. jBPM 6.3
26.29.1. New and Noteworthy in jBPM 6.3.0
26.29.2. New and Noteworthy in KIE Workbench 6.3.0
26.30. jBPM 6.2
26.30.1. New and Noteworthy in jBPM 6.2.0
26.30.2. New and Noteworthy in KIE Workbench 6.2.0
26.31. jBPM 6.1
26.31.1. New and Noteworthy in jBPM 6.1.0
26.31.2. New and Noteworthy in KIE Workbench 6.1.0
26.32. jBPM 6.0
26.32.1. New and Noteworthy in KIE API 6.0.0
26.32.2. New and Noteworthy in jBPM 6.0.0
26.32.3. New and Noteworthy in KIE Workbench 6.0.0
26.32.4. New and Noteworthy in Integration 6.0.0
jBPMLogo
Getting Started
Introduction and getting started with jBPM
- Overview
1.1. What is jBPM?
jBPM is a flexible Business Process Management (BPM) Suite. It is light-weight, fully open-source (distributed under Apache License 2.0) and written in Java. It allows you to model, execute, and monitor business processes and cases throughout their life cycle.
Process
A business process allows you to model your business goals by describing the steps that need to be executed to achieve those goals, and the order of those goals is depicted using a flow chart. This process greatly improves the visibility and agility of your business logic. jBPM focuses on executable business processes, which are business processes that contain enough detail so they can actually be executed on a BPM jBPM engine. Executable business processes bridge the gap between business users and developers as they are higher-level and use domain-specific concepts that are understood by business users but can also be executed directly.
Business processes need to be supported throughout their entire life cycle: authoring, deployment, process management and task lists, and dashboards and reporting.
The core of jBPM is a light-weight, extensible workflow engine written in pure Java that allows you to execute business processes using the latest BPMN 2.0 specification. It can run in any Java environment, embedded in your application or as a service.
On top of the jBPM engine, a lot of features and tools are offered to support business processes throughout their entire life cycle:
Pluggable human task service based on WS-HumanTask for including tasks that need to be performed by human a